mi sono imbattuto nel seguente:Che tipo di oggetto @ [obj1, obj2] crea?
NSArray *array = @[object1, object2];
Sembra essere la creazione di un NSArray
, ma è questo caso di matrice un oggetto autoreleased, o devo rilasciarlo?
mi sono imbattuto nel seguente:Che tipo di oggetto @ [obj1, obj2] crea?
NSArray *array = @[object1, object2];
Sembra essere la creazione di un NSArray
, ma è questo caso di matrice un oggetto autoreleased, o devo rilasciarlo?
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
È 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:
"Il compilatore lo cambia in:" No, lo cambia per usare 'arrayWithObjects: count:'. – user102008
E l'uomo non è vero impressionante! bisogno di un po 'di viola nel mio codice lol –
se ho bisogno di creare un oggetto non autorelease, non posso usare sopra letterale? –
è ancora possibile utilizzarlo, basta conservare l'array in seguito – wattson12