@autoreleasepool без ARC?

Я новичок в Xcode 4.2, и я еще не полностью готов к работе на ARC. Тем не менее, я прочитал, что @autoreleasepool заменяет ручное использование пулов автоопределения и делает некоторую специальную магию под капотом, чтобы хорошо играть с ARC.

Тем не менее, когда я запускаю новый проект в Xcode 4.2, в частности, с опцией ARC, которая была отключена off, я все еще получаю инструкции @autoreleasepool в коде шаблона.

Какая сделка здесь?

Ответ 1

Из 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, и он будет быстрее, чем NSAutoreleasePool в OS X v10.7 + и iOS 5.0 +.