我对NSOperation
和GCD
有一些简单的疑问,我没有在文档中找到答案。
第一个问题与内存管理有关:
我想知道是否需要为我将添加到NSOperationQueue的方法创建一个Autorealease池;类似于在没有NSOperations的情况下在不同线程上运行方法时。
接下来的问题是NSOperation
是否需要处理GCD,或者是否需要手动完成?
感谢您的帮助!
答案 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。