2011-10-31 48 views
31

我是Xcode 4.2的新手,我还没有完全掌握ARC的速度。不过,我的确读过@autoreleasepool替代了autorelease池的手动使用,并且在引擎盖下做了一些特殊的魔法来与ARC打好关系。@autoreleasepool没有ARC?

但是,当我在Xcode 4.2中启动一个新项目时,ARC选项变为off我仍然在模板代码中获得@autoreleasepool语句。

这里的交易是什么?

回答

50

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

@autoreleasepool可以非ARC翻译单元中使用,具有等效的语义。

和格雷格·帕克说[1][2]

LLVM 3.0的@autoreleasepool { ... }比NSAutoreleasePool快得多,如果你的部署目标是够新。不需要ARC。 (...)总能正常工作,但以OS X 10.7或iOS 5.0的部署目标为准。

所以您可以使用@autoreleasepool无论ARC的,它会在OS X v10.7 +和iOS 5.0+快于NSAutoreleasePool