我是Xcode 4.2的新手,我还没有完全掌握ARC的速度。不过,我的确读过@autoreleasepool替代了autorelease池的手动使用,并且在引擎盖下做了一些特殊的魔法来与ARC打好关系。@autoreleasepool没有ARC?
但是,当我在Xcode 4.2中启动一个新项目时,ARC选项变为off我仍然在模板代码中获得@autoreleasepool语句。
这里的交易是什么?
我是Xcode 4.2的新手,我还没有完全掌握ARC的速度。不过,我的确读过@autoreleasepool替代了autorelease池的手动使用,并且在引擎盖下做了一些特殊的魔法来与ARC打好关系。@autoreleasepool没有ARC?
但是,当我在Xcode 4.2中启动一个新项目时,ARC选项变为off我仍然在模板代码中获得@autoreleasepool语句。
这里的交易是什么?
从http://clang.llvm.org/docs/AutomaticReferenceCounting.html#autoreleasepool:
@autoreleasepool
可以非ARC翻译单元中使用,具有等效的语义。
LLVM 3.0的
@autoreleasepool { ... }
比NSAutoreleasePool快得多,如果你的部署目标是够新。不需要ARC。 (...)总能正常工作,但以OS X 10.7或iOS 5.0的部署目标为准。
所以您可以使用@autoreleasepool
无论ARC的,它会在OS X v10.7 +和iOS 5.0+快于NSAutoreleasePool
。