0

我对NSOperationGCD有一些简单的疑问,我还没有在文档中找到答案。NSOperationQueue,记忆和GCD;如何正确实施?

的冷杉问题是内存管理相关:

我想知道如果我需要为我西港岛线添加到NSOperationQueue的方法的Autorealease池;类似于当你在没有NSOperations的不同线程上运行一个方法。

接下来的问题是NSOperation是否照顾GCD或者是否需要手动完成?

谢谢你的帮助!

回答

0

根据the documentation,您应该在NSOperation的main方法中创建一个NSAutoreleasePool。 NSInvocationOperation和NSBlockOperation的文档没有指定他们是否为你创建一个自动释放池,所以为了安全起见,最好在使用这些类时创建一个。

NSOperationQueue处理排队​​和执行操作,所以你不应该为了操作队列相关的任务而自己乱搞GCD。

1

我刚才在这里看到你的问题,并且有一个post on the apple dev forums你可能会感兴趣。根据这个线程上的一个苹果家伙,只要你通过NSOperationQueue运行你的NSOperation,你不需要创建你自己的autorelease作为NSOperationQueue为您提供服务。

此外,NSOperationQueue的文档显然需要更新/更正。在运行iOS 4或更高版本的设备上,NSOperationQueue尽管使用了类参考文档,但仍使用GCD。