【发布时间】:2014-06-25 17:43:58
【问题描述】:
这可能是一个简单的问题,但我进行了几次快速搜索,但找不到答案。我是否必须保留NSOperationQueue(通过使用属性等)以避免在方法完成执行后释放它。例如:
- (void)doOperation:(NSOperation *)someOperation {
NSOperationQueue *queue = [[NSOperationQueue alloc] init]
[queue addOperation:someOperation];
}
我知道队列在执行时会保留该操作,但是队列是否会被 arc 释放,因为它在此方法范围之外没有显式引用?
【问题讨论】:
-
这很相似,但这说明这只是无证行为,我很好奇实际会发生什么。我想我会在队列运行时保留队列以确保安全。
-
我的实验也表明队列是保留的。但只要它没有被记录在案,就可能不应该依赖它。
-
如何将 NSOperationQueue 声明为弱属性并覆盖 getter 以进行惰性实例化?这样您就不必不断地分配/初始化一个新队列,您可以在整个类中使用相同的属性,并且队列的内存管理也将非常有效。
-
@MartinR 自该评论以来可能已经发生了这种情况,但文档(现在)实际上说“操作队列保留操作直到它们完成,并且队列本身被保留直到所有操作完成。” [强调我的。]
标签: ios objective-c automatic-ref-counting nsoperationqueue