2011-11-28 7 views
15

Se ho questo codice,equivalente ARC di autorelease?

+ (MyCustomClass*) myCustomClass 
{ 
    return [[[MyCustomClass alloc] init] autorelease]; 
} 

Questo codice garanzie l'oggetto di ritorno è autoreleased. Qual è l'equivalente di questo in ARC?

risposta

20

Non esiste un equivalente in ARC, poiché non è necessario farlo da soli. succederà dietro le quinte e non ti è permesso farlo da solo.

è sufficiente utilizzare -

+ (MyCustomClass*) myCustomClass 
{ 
    return [[MyCustomClass alloc] init]; 
} 

vi consiglio di guardare l'introduzione ARC nel 2011 WWDC in quanto molto semplice quando lo si ottiene.

Guardate qui: https://developer.apple.com/videos/wwdc/2011/

E come il ragazzo nel film dice -

Non devi pensarci più (quasi)

+4

Si noti che ciò che accade dipende da come si chiama il metodo, però. – Thilo

+1

Questo è trow e questo è il motivo per cui ho aggiunto il quasi nell'ultima riga. Credo davvero che la conferenza sul WWDC sia eccezionale e spiega tutti i principali problemi con ARC. – shannoga

+1

Forse devo sapere ogni dettaglio che cosa che accade in sotto a causa di quella * quasi * :) – Eonil

7

Quando si compila con ARC, è sufficiente scriverlo come:

+ (MyCustomClass *)myCustomClass 
{ 
    return [[MyCustomClass alloc] init]; 
} 

e il compilatore/runtime gestiranno il resto per te.

+1

+1 per davvero risolvere la questione – JeremyP

+0

il runtime non ha nulla a che fare con ARC, è tutto compilatore magicness – DanZimm

+0

@DanZimm no - il runtime è anche al lavoro. ad esempio: è il runtime che consente la proprietà degli oggetti da trasferire attraverso i frame. http://clang.llvm.org/docs/AutomaticReferenceCounting.html#runtime – justin