Bre*_*ett 4 posix objective-c nsautoreleasepool automatic-ref-counting
根据这个Apple 页面,我已经读过,当我在POSIX线程上与Cocoa进行交互时,我应该创建一个NSAutoreleasePool.
如果您在Application Kit的主线程之外进行Cocoa调用 - 例如,如果您创建仅基于Foundation的应用程序,或者如果您分离线程 - 您需要创建自己的自动释放池.
不幸的是,NSAutoreleasePool在ARC中不允许使用.
那么我该怎么做才能保证任何ARC代码都有自动释放的可用池?
谢谢!
@autoreleasepool
{
// make Cocoa calls here
}
Run Code Online (Sandbox Code Playgroud)
这允许编译器正确推理跨越池边界的对象的生命周期,这是ARC的要求.(这就是你无法使用的原因NSAutoreleasePool.)作为奖励,它也更快.