me encontré con lo siguiente:¿Qué tipo de objeto crea @ [obj1, obj2]?
NSArray *array = @[object1, object2];
Parece ser la creación de un NSArray
, pero es esta instancia de matriz autoreleased un objeto, o debe liberarlo?
me encontré con lo siguiente:¿Qué tipo de objeto crea @ [obj1, obj2]?
NSArray *array = @[object1, object2];
Parece ser la creación de un NSArray
, pero es esta instancia de matriz autoreleased un objeto, o debe liberarlo?
Ésta es una nueva colección literal disponible en el compilador que se incluyen con Xcode 4.4 y por encima de
@[object1, object2];
es equivalente a
[NSArray arrayWithObjects:object1, object2, nil];
así que sí, es un objeto autoreleased, si es necesario esto a ser retenido, puede hacerlo
myRetainedArray = [@[object1, object2] retain];
this question tiene un ir od descripción de todos los literales nuevos
Es el nuevo literal del compilador llvm para crear una matriz. El compilador cambia esto a:
NSArray *array = [NSArray arrayWithObjects: object1,object2,nil];
Devuelve un objeto liberado automáticamente.
Una búsqueda de Google criado más información:
"El compilador cambia esto a:" No, lo cambia para usar 'arrayWithObjects: count:'. – user102008
y el hombre es verdad impresionante! necesitaba un poco de color púrpura en mi código lol –
si necesito crear un objeto que no se libera, no puedo usar el literal anterior? –
todavía puede usarlo, simplemente conserve la matriz después – wattson12