我是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
。