我是Xcode 4.2的新手,我还没有完全掌握ARC的速度。但是,我确实读到@autoreleasepool取代了自动释放池的手动使用,并且在引擎盖下做了一些特殊的魔法,以便与ARC一起玩。
然而,当我在Xcode 4.2中开始一个新项目时,特别是ARC选项转为关闭,我仍然在模板代码中获得@autoreleasepool语句。
这里的交易是什么?
答案 0 :(得分:50)
来自http://clang.llvm.org/docs/AutomaticReferenceCounting.html#autoreleasepool:
@autoreleasepool
可用于非ARC翻译单元,具有等效语义。
如果您的部署目标足够新,则LLVM 3.0的
@autoreleasepool { ... }
比NSAutoreleasePool快得多。不需要ARC。 (...)总是有效,但是对于OS X 10.7或iOS 5.0的部署目标来说速度更快。
因此,无论ARC如何,您都可以使用@autoreleasepool
,并且它会比OS X v10.7 +和iOS 5.0 +上的NSAutoreleasePool
更快。