Estoy haciendo un juego para iPhone. Quiero liberar todos los objetos que han sido asignados o retenidos. En la función dealloc
estoy liberando todos esos objetos, pero luego me di cuenta de que a veces termino liberando objetos cuando aún no han sido asignados. Así que pensé que necesitaba comprobar si su retainCount
es mayor que cero o no antes de que lo libere.¿Cuántas veces lanzo un objeto asignado o retenido?
Mi pregunta es:
No acabo de comprobar si el retainCount
es mayor que cero y luego soltarlo?
if([bg retainCount]!=0)
{
[bg release];
}
o
¿Debo liberar tantas veces como su retainCount
while([bg retainCount]!=0)
{
[bg release];
}
Gracias por su ayuda!
El 'retainCount' de cualquier objeto es ** nada de su negocio **. Está allí como una ayuda de depuración, pero nada más. El código de producción nunca debería depender de él. – Sven
BTW - no es que haga que el código sea correcto, pero, por definición, 'retainCount' nunca puede devolver 0 porque el objeto ya ha sido desasignado por el momento en que ocurre ..... – bbum
Además, intente usar" Build & Analizar "(es decir, el analizador Clang). Puede que te indique dónde te va mal. –