@autoreleasepool без ARC?

#xcode #xcode4.2 #automatic-ref-counting

#xcode #xcode4.2 #автоматический подсчет ссылок

Вопрос:

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

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

В чем здесь дело?

Ответ №1:

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

@autoreleasepool может использоваться в единицах перевода, отличных от ARC, с эквивалентной семантикой.

и Грег Паркер говорит [1] [2]:

LLVM 3.0 @autoreleasepool { ... } намного быстрее, чем NSAutoreleasePool, если ваша цель развертывания достаточно новая. Дуга не требуется. (…) всегда работает, но это быстрее с целью развертывания OS X 10.7 или iOS 5.0.

Таким образом, вы можете использовать @autoreleasepool независимо от ARC, и это будет быстрее, чем NSAutoreleasePool в OS X версии 10.7 и iOS 5.0 .