2011-10-31 42 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