2009-08-11 16 views

Respuesta

35

No, no las copia. Los retiene. Sí, puede liberar los objetos de forma segura después de agregarlos a la matriz.

The docs, como siempre, esto de manifiesto con toda claridad:

matrices mantienen fuertes referencias a su contenido-en un entorno de memoria administrada, cada objeto recibe un mensaje retienen antes de añadir su identificador a la matriz y un mensaje de liberación cuando se elimina de la matriz o cuando la matriz se desasigna. Si desea una colección con una semántica de propiedad de objetos diferente, considere usar CFArray Reference, NSPointerArray o NSHashTable.

+2

Gran respuesta. También recuerde que + arrayWithObjects: devuelve una matriz sin propietario ("autoreleased"), por lo que debe conservarla para evitar perderla, pero el objeto en la matriz estará disponible mientras dure la matriz. –

+0

¡Muchas gracias! Debes saber que busco en la documentación antes de publicar en Stack Overflow (aunque a veces no encuentro todo). Gracias por tomarse el tiempo para responder mi pregunta. –

+1

Gracias por la respuesta, aunque esa propaganda ya no está en la referencia, FYI. Por lo que puedo decir, toda esa sección se ha ido. Solo puede inferirlo mirando la información de subclases y algunas de las llamadas a funciones, y eso principalmente porque me indicó la dirección correcta. – RonLugge

Cuestiones relacionadas