Swift: добавить операции в DispatchQueue / OperationQueue, но запустить очередь позже - PullRequest
0 голосов
/ 23 февраля 2020

У меня есть входящие пакеты, но в редких случаях объект для их обработки еще не готов. На данный момент я делаю

  • , добавляя данные в массив
  • и while (true) l oop проверяя состояние объектов
  • если объект готов, вставьте элементы массива в объект

Это работает, но довольно уродливо. Я думал о том, чтобы добавить ожидающие операции в OperationQueue, а затем запустить процесс, как только объект обработки будет готов.

Однако я не могу найти ни одной функции, позволяющей удерживать операции «в ожидании», пока Я говорю им, чтобы начать идти.

Что я могу с этим поделать?

1 Ответ

1 голос
/ 23 февраля 2020

вы можете использовать свойство isSuspended NSOperationQueue.

var isSuspended: Bool { get set }

От Apple do c:

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

Обратите внимание, что установка этого свойства в значение true предотвращает только те операции, которые еще не началось. В вашем случае вы должны установить для этого свойства значение true после инициализации объекта NSOperationQueue. Когда все будет готово, установите isSuspended в false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...