5

枚举,通过快速枚举,通过[NSOperationQueue operations]安全吗?像这样:枚举[NSOperationQueue操作]是否安全?

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

由于操作是异步的,在另一个线程执行,operations可以随时更改(包括主线程的执行期间)。快速枚举可以防止这种情况,还是我应该使用操作数组而不是copy(和autorelease)?

回答

11

这只是un如果在枚举枚举时队列发生变异,那么这个队列会变得很安全。

然而:

返回包含当前队列的操作的新的数组。

there中的“新”这个词向我暗示,队列会为您执行复制和自动释放,因此您可以安全地枚举整个数组。

+0

+1,很好的从文档中捕获 –

+0

的确,非常好的捕获。谢谢彼得。 –