4

根据这个 Apple页面,我读到在 POSIX 线程上与 Cocoa 交互时,我应该创建一个NSAutoreleasePool.

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

不幸的是,NSAutoreleasePoolARC 不允许使用。

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

谢谢!

4

1 回答 1

5

使用@autoreleasepool.

@autoreleasepool
{
    // make Cocoa calls here
}

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

于 2012-08-25T20:30:03.387 回答