2011-10-31 13 views
31

Sono nuovo di Xcode 4.2 e non sono ancora del tutto aggiornato su ARC. Tuttavia, ho letto che @autoreleasepool sostituisce l'uso manuale dei pool di autorelease e fa un po 'di magia speciale sotto il cofano per giocare con ARC.@autoreleasepool senza ARC?

Tuttavia, quando avvio un nuovo progetto in Xcode 4.2 in particolare con l'opzione ARC attivata off ho ancora le istruzioni @autoreleasepool nel codice del modello.

Qual è l'affare qui?

risposta

50

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

@autoreleasepool può essere utilizzato in unità di traduzione non ARC, con semantica equivalenti.

e Greg Parker dice [1][2]:

LLVM 3.0 @autoreleasepool { ... } è molto più veloce di NSAutoreleasePool se la destinazione della distribuzione è abbastanza nuova. Non è richiesto alcun ARC. (...) funziona sempre, ma è più veloce con l'obiettivo di distribuzione di OS X 10.7 o iOS 5.0.

quindi si può utilizzare @autoreleasepool indipendentemente ARC, e sarà più veloce di NSAutoreleasePool su OS X v10.7 + e iOS 5.0+.

Problemi correlati