我对NSOperation
和GCD
有一些简单的疑问,我还没有在文档中找到答案。NSOperationQueue,记忆和GCD;如何正确实施?
的冷杉问题是内存管理相关:
我想知道如果我需要为我西港岛线添加到NSOperationQueue的方法的Autorealease池;类似于当你在没有NSOperations的不同线程上运行一个方法。
接下来的问题是NSOperation
是否照顾GCD或者是否需要手动完成?
谢谢你的帮助!
我对NSOperation
和GCD
有一些简单的疑问,我还没有在文档中找到答案。NSOperationQueue,记忆和GCD;如何正确实施?
的冷杉问题是内存管理相关:
我想知道如果我需要为我西港岛线添加到NSOperationQueue的方法的Autorealease池;类似于当你在没有NSOperations的不同线程上运行一个方法。
接下来的问题是NSOperation
是否照顾GCD或者是否需要手动完成?
谢谢你的帮助!
根据the documentation,您应该在NSOperation的main
方法中创建一个NSAutoreleasePool。 NSInvocationOperation和NSBlockOperation的文档没有指定他们是否为你创建一个自动释放池,所以为了安全起见,最好在使用这些类时创建一个。
NSOperationQueue处理排队和执行操作,所以你不应该为了操作队列相关的任务而自己乱搞GCD。
我刚才在这里看到你的问题,并且有一个post on the apple dev forums你可能会感兴趣。根据这个线程上的一个苹果家伙,只要你通过NSOperationQueue运行你的NSOperation,你不需要创建你自己的autorelease作为NSOperationQueue为您提供服务。
此外,NSOperationQueue的文档显然需要更新/更正。在运行iOS 4或更高版本的设备上,NSOperationQueue尽管使用了类参考文档,但仍使用GCD。