我有一些简单的疑问,NSOperation
并且GCD
我没有在文档中找到答案。
第一个问题与内存管理有关:
我想知道是否需要为要添加到 NSOperationQueue 的方法创建一个 Autorealease 池;类似于在没有 NSOperations 的不同线程上运行方法时。
下一个问题是是否NSOperation
需要处理 GCD 还是需要手动完成?
感谢您的帮助!
我有一些简单的疑问,NSOperation
并且GCD
我没有在文档中找到答案。
第一个问题与内存管理有关:
我想知道是否需要为要添加到 NSOperationQueue 的方法创建一个 Autorealease 池;类似于在没有 NSOperations 的不同线程上运行方法时。
下一个问题是是否NSOperation
需要处理 GCD 还是需要手动完成?
感谢您的帮助!
我刚刚在这里看到了您的问题,并且您可能感兴趣的苹果开发论坛上有一篇帖子。根据该线程上的一位苹果人的说法,只要您通过 NSOperationQueue 运行 NSOperation,您就不需要创建自己的NSOperationQueue 为您执行自动释放池。
NSOperationQueue 的文档显然也需要更新/更正。在运行 iOS 4 或更高版本的设备上,NSOperationQueue 确实使用 GCD,尽管类参考文档说了什么。
根据文档main
,您应该在NSOperation 的方法中创建一个 NSAutoreleasePool 。NSInvocationOperation 和 NSBlockOperation 的文档没有指定它们是否为您创建自动释放池,因此为了安全起见,最好在使用这些类时也创建一个。
NSOperationQueue 处理排队和执行操作,因此您不必为与操作队列相关的任务自己弄乱 GCD。