2

是否向NSOperationQueue插入NSOperation会增加NSOperation的保留计数?如果是,什么时候它会减少?NSOperation的保留计数行为

+1

http://whentouseretaincount.com – 2012-08-22 10:25:47

回答

3

请阅读文档。

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSOperationQueue_class/Reference/Reference.html

  • (无效)addOperation:(的NSOperation *)操作

参数

操作

要添加到队列中的操作对象。在内存管理的应用程序中,该对象由操作队列保留。在 垃圾回收应用程序中,队列强烈引用操作对象 。

讨论

添加完毕后,在指定操作直到它 完成执行保留在队列中。

+0

好吧,我差点拿到了。但还是有一些澄清。我什么时候说NSoperation已经完成执行?主要方法是否完成执行?在我从NSoperation的例子中,我异步地调用一个web服务,并且我有一个回调方法来捕获结果。是否有任何保证,只有在回调方法得到响应后,NSoperation才会被释放? (我弱从web服务类引用NSoperation对象) – Advaith

2

the documentation

在存储器管理的应用程序,这个目的是由操作队列保留。在垃圾回收应用程序中,队列强烈引用操作对象。

出队和处理时它会减少,所以你不必担心它。只需将其添加到队列中,并确保您已平衡了所有retainrelease,并且它不会泄漏内存。