NSOperation: как сделать паузу и возобновить - PullRequest
2 голосов
/ 20 декабря 2011

У меня есть операция NSO, используемая для копирования файлов. Я копирую файлы с помощью write (), а затем имею возможность между каждым write () «приостановить» копирование. Однако я не знаю, как:

  • Сообщите операции, что она должна быть приостановлена ​​(из основного потока пользовательского интерфейса)
  • Приостановить операцию (я думаю, что "while (isPaused == YES)" - неправильный вариант
  • Скажите, чтобы операция продолжалась

Спасибо за вашу помощь

1 Ответ

2 голосов
/ 20 декабря 2011

Вы можете сделать это с семафором; но вместо того, чтобы использовать семафор для управления доступом к части кода (т. е. получить блокировку, использовать ресурс, освободить модель блокировки), вы вместо этого просто воспринимаете его как гейт - получение, тестирование условия / блока, освобождение и продолжение.

NSCondition даст вам семафор высокого уровня. В обзоре шаг 3 - «проверить, стоит ли мне делать паузу», а шаги 4 и 5 - «нет, ничего не делать».

...