Безопасно ли перечислять через [операции NSOperationQueue]? - PullRequest
5 голосов
/ 26 июня 2011

Безопасно ли перечислять с помощью быстрого перечисления через [NSOperationQueue operations]? Вот так:

for (NSOperation *op in [operationQueue operations]) {
    // Do something with op
}

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

1 Ответ

11 голосов
/ 26 июня 2011

Безопасно только un , если очередь изменяет массив во время его перечисления.

Однако:

Возвращает новый массив, содержащий операциив данный момент находится в очереди.

Слово «новый» в там подсказывает мне, что очередь выполнит для вас копирование и автоматический выпуск, так что вы можете безопасно перечислять через массив.

...