没有ARC的@autoreleasepool?

时间:2011-10-31 06:34:16

标签: xcode xcode4.2 automatic-ref-counting

我是Xcode 4.2的新手,我还没有完全掌握ARC的速度。但是,我确实读到@autoreleasepool取代了自动释放池的手动使用,并且在引擎盖下做了一些特殊的魔法,以便与ARC一起玩。

然而,当我在Xcode 4.2中开始一个新项目时,特别是ARC选项转为关闭,我仍然在模板代码中获得@autoreleasepool语句。

这里的交易是什么?

1 个答案:

答案 0 :(得分:50)

来自http://clang.llvm.org/docs/AutomaticReferenceCounting.html#autoreleasepool

  

@autoreleasepool可用于非ARC翻译单元,具有等效语义。

和Greg Parker说[1] [2]

  

如果您的部署目标足够新,则LLVM 3.0的@autoreleasepool { ... }比NSAutoreleasePool快得多。不需要ARC。 (...)总是有效,但是对于OS X 10.7或iOS 5.0的部署目标来说速度更快。

因此,无论ARC如何,您都可以使用@autoreleasepool,并且它会比OS X v10.7 +和iOS 5.0 +上的NSAutoreleasePool更快。