NSOperationQueue,记忆和GCD;如何正确实施?

时间:2011-03-20 00:44:46

标签: iphone ios grand-central-dispatch nsoperation nsoperationqueue

我对NSOperationGCD有一些简单的疑问,我没有在文档中找到答案。

第一个问题与内存管理有关:

我想知道是否需要为我将添加到NSOperationQueue的方法创建一个Autorealease池;类似于在没有NSOperations的情况下在不同线程上运行方法时。

接下来的问题是NSOperation是否需要处理GCD,或者是否需要手动完成?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

我刚看到你的问题,你可能会对post on the apple dev forums感兴趣。根据这个线程中的一个苹果人,只要你通过NSOperationQueue运行你的NSOperation,你就不需要创建您自己的自动释放池,因为NSOperationQueue会为您完成。

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

答案 1 :(得分:0)

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

NSOperationQueue处理排队​​和执行操作,因此您不必为了与操作队列相关的任务而自行处理GCD。