1

Допустим, у меня есть комплексный расчет, выполняющийся в блоке NSOperation. Я сделал паузу. Закрыл приложение. Затем перезапустили приложение. Могу ли я восстановить последнее состояние и продолжить оттуда? Существует ли существующее решение для такой проблемы или оно может быть выполнено только для определенных целей?Сохранение приостановлено NSOperationQueue в файл

ответ

0

Вопрос немного расплывчатый, поэтому трудно сказать, не зная, что весь код в игре. С учетом сказанного я могу подойти к этой проблеме:

Вариант 1. В вашем подклассе NSOperation добавьте свое собственное свойство KVO атома "isPaused". Внутри самой операции обратите внимание на это свойство и обрабатывайте его соответственно, если он когда-либо изменится.

Вариант 2. Вы когда-либо приостанавливаете операцию «Очередь операций»? Если это так, рассмотрите возможность наблюдения этого свойства из ваших операций, и каждый из них самостоятельно может принять меры, если это значение изменится.

Вариант 3. Отмените все операции в очереди, и если представление появится снова, просто перезапустите его с помощью новых операций.

В целом, нет волшебной пули для приостановки операций, которые уже выполняются. Вам придется испечь свое решение. Однако ущерб не должен быть слишком плохим.

Приостановка приостановки и возобновления очередей Если вы хотите временно приостановить выполнение операций, вы можете приостановить соответствующую очередь операций с помощью метода setSuspended :.

Приостановка очереди не приводит к приостановке операций, выполняемых в середине их задач. Это просто предотвращает запуск новых операций для выполнения. Вы можете приостановить очередь в ответ на запрос пользователя, чтобы приостановить любую текущую работу, потому что ожидается, что пользователь может в конечном итоге захочет возобновить эту работу.

Подробнее см. Ссылку apple docs: http://developer.apple.com/library/mac/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationObjects/OperationObjects.html

 Смежные вопросы

  • Нет связанных вопросов^_^