POSIX回调函数和使用ARC的NSAutoreleasePool

4
根据这个苹果页面,我了解到当在POSIX线程上与Cocoa交互时,应该创建NSAutoreleasePool

如果你在Application Kit的主线程之外进行Cocoa调用--例如,如果你创建一个仅基于Foundation的应用程序或者你分离了一个线程--你需要创建自己的autorelease池。

不幸的是,在ARC中使用NSAutoreleasePool是被禁止的。
那么,我该怎么做才能保证任何ARC代码都有可用的池来自动释放呢?
谢谢!
1个回答

5

使用@autoreleasepool

请使用自动释放池。
@autoreleasepool
{
    // make Cocoa calls here
}

这使得编译器能够正确地推断跨越池边界的对象的生命周期,这是ARC的要求。(这就是为什么你不能使用NSAutoreleasePool的原因。)作为奖励,它还更快。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接