4

根据这个苹果page,我读过,当在POSIX线程上与Cocoa交互时,我应该创建一个NSAutoreleasePoolPOSIX回调函数和NSAutoreleasePool与ARC

如果您正在可可如果创建了一个基金会,只是应用程序调用的应用程序套件的主要 线程例如之外,或者如果你 分离线程,你需要创建自己的自动释放池。

不幸的是,在ARC中不允许使用NSAutoreleasePool

我应该怎么做才能保证始终有一个池可用于任何自动发布的ARC代码?

谢谢!

回答

5

使用@autoreleasepool

@autoreleasepool 
{ 
    // make Cocoa calls here 
} 

这允许编译器正确推理跨池的边界,这是ARC的要求对象的生命周期。 (这就是为什么你不能使用NSAutoreleasePool。)作为奖励,它也更快。