0

我有一些简单的疑问,NSOperation并且GCD我没有在文档中找到答案。

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

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

下一个问题是是否NSOperation需要处理 GCD 还是需要手动完成?

感谢您的帮助!

4

2 回答 2

1

我刚刚在这里看到了您的问题,并且您可能感兴趣的苹果开发论坛上有一篇帖子。根据该线程上的一位苹果人的说法,只要您通过 NSOperationQueue 运行 NSOperation,您就不需要创建自己的NSOperationQueue 为您执行自动释放池。

NSOperationQueue 的文档显然也需要更新/更正。在运行 iOS 4 或更高版本的设备上,NSOperationQueue 确实使用 GCD,尽管类参考文档说了什么。

于 2011-03-22T22:54:14.980 回答
0

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

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

于 2011-03-20T01:13:59.510 回答