2011-10-31 9 views
31

Soy nuevo en Xcode 4.2, y aún no estoy completamente actualizado sobre ARC. Sin embargo, sí leí que @autoreleasepool reemplaza el uso manual de los grupos de autorelease y hace algo de magia especial debajo del capó para jugar bien con ARC.@autoreleasepool sin ARC?

Sin embargo, cuando comienzo un nuevo proyecto en Xcode 4.2 específicamente con la opción ARC convertida en, sigo recibiendo instrucciones @autoreleasepool en el código de la plantilla.

¿Cuál es el problema aquí?

Respuesta

50

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

@autoreleasepool pueden utilizarse en unidades de traducción no arqueada, con la semántica equivalentes.

y Greg Parker dice [1][2]:

LLVM de 3.0 @autoreleasepool { ... } es mucho más rápido que NSAutoreleasePool si su destino de implementación es lo suficientemente nuevo. No requiere ARC. (...) siempre funciona, pero es más rápido con el destino de implementación de OS X 10.7 o iOS 5.0.

Así que usted puede utilizar @autoreleasepool independientemente de ARC, y va a ser más rápido que NSAutoreleasePool en OS X 10.7 + y iOS 5.0 o superior.