Pregunta

A veces me pregunto cuando algo se autoreleased. He añadido un NSLog en el dealloc de varios objetos, pero no pude encontrar nada útil.

Cuando se hace algo cuando la liberación autorelease se utiliza? Es impredecible, o hay algún hilo conductor adicional? Gracias.

¿Fue útil?

Solución

Cuando la "piscina autorelease expira".

Lo que esto significa típicamente, es cuando la pila se desenrolla.

Así que creo que de esta manera - que su aplicación está orientada a eventos. Se obtiene eventos enviados a él - y que se procesan a través de una serie de funciones. Cuando cada una de las funciones de devoluciones, y el evento se hace que se procesa, se llamará autorelease.

Esto significa que puede contar con un objeto que aún estaba vivo cuando AutoRelease, y volverlo a partir de una función para que la persona que llama. Nunca esperamos que sea en torno al procesar cualquier tipo de evento posterior, o cuando se llama fuera del marco de pila que ya existente.

Otros consejos

De la documentación iOS

Cada hilo en una aplicación Cocoa mantiene su propia pila de objetos NSAutoreleasePool. Cuando un termina de rosca, que libera de forma automática todas las piscinas autorelease asociados con sí mismo.

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