2012-08-01 14 views

risposta

9

Questa è una nuova collezione letterale disponibili nel compilatore forniti con Xcode 4.4 e sopra

@[object1, object2]; 

è equivalente a

[NSArray arrayWithObjects:object1, object2, nil]; 

quindi sì, è un oggetto autoreleased, se avete bisogno di tale da conservare, si può fare

myRetainedArray = [@[object1, object2] retain]; 

this question ha un go descrizione di tutti i nuovi letterali

+1

E l'uomo non è vero impressionante! bisogno di un po 'di viola nel mio codice lol –

+0

se ho bisogno di creare un oggetto non autorelease, non posso usare sopra letterale? –

+0

è ancora possibile utilizzarlo, basta conservare l'array in seguito – wattson12

0

È il letterale del nuovo compilatore llvm per la creazione di un array. Il compilatore lo modifica in:

NSArray *array = [NSArray arrayWithObjects: object1,object2,nil]; 

Quindi restituisce un oggetto autoreleased.

Una ricerca di Google allevato ulteriori informazioni:

http://clang.llvm.org/docs/ObjectiveCLiterals.html

+1

"Il compilatore lo cambia in:" No, lo cambia per usare 'arrayWithObjects: count:'. – user102008

Problemi correlati