Se -replaceObjectAtIndex: withObject: NSMutableArray de liberar el objeto de edad que está sustituido por uno nuevo?

StackOverflow https://stackoverflow.com/questions/906183

Pregunta

La documentación no dice nada al respecto. Cuando un objeto antiguo está "retirado" y uno nuevo entra en su lugar, ¿qué ocurre con el viejo? ¿Tengo que liberarlo por mi cuenta?

¿Fue útil?

Solución

No, usted no tiene que liberar por sí mismo.

Es posible obtener un error si el objeto reemplazado tiene una cuenta de retención igual a 0.

El nuevo objeto está retenido. El objeto se libera de edad.

Otros consejos

No es necesario para liberarlo.

No ha realizado un alloc , Copiar o retener en él y por lo tanto no es responsable de la memoria - con este la documentación es bastante claro.

No esperaría de Apple para documentar los procedimientos de gestión de memoria para cada método en el SDK a menos que viole las normas de gestión de memoria que ya se han establecido. Si la documentación no dice nada se puede asumir el valor por defecto se aplican las reglas.

La documentación indica muy claramente este derecho en la parte superior del archivo:

  

Al igual que NSArray, los casos de NSMutableArray mantienen fuertes referencias a sus contenidos. Si no se utiliza la recolección de basura, cuando se agrega un objeto a una matriz, el objeto recibe un mensaje conservan. Cuando un objeto se retira de un array mutable, recibe un mensaje de liberación. Si no hay más referencias al objeto, esto significa que el objeto se cancela la asignación. Si su programa mantiene una referencia a un objeto, la referencia no será válida a menos que envíe un mensaje al objeto retener antes de que sea retirado de la matriz.

No hay punto documentar esto en varias ocasiones para cada método.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top