Los 3 mandamientos de la gestión de memoria en Objective C y Cocoa.
- : Para las variables de instancia, usa SIEMPRE propiedades autogeneradas (@property y @synthesize). Esto es todo lo que tienes que recordar para las variables de instancia.
- : Para los objetos temporales, si los has creado llamando a alloc o a copy, eres responsable de llamar a release o autorelease al final del método en el que los has creado.
- : Si has creado ese objeto temporal de cualquier otra forma que no sea con alloc o copy, no tienes que hacer nada.





[...] si tenemos esto claro, ya podemos pasar a las 3 reglas que impedirán que tengamos filtrados de memoria (objetos que nunca son destruidos), o pero aún, errores de acceso (intentar usar un objeto que ya [...]
Para complementar, hay ocaciones en que necesitamos realizar operaciones las cuales generan muchos objetos temporales, que no esta en nuestras manos liberarlos, por ejemplo llamando en nuestra operacion muchas veces a [NSString substringWithRange:] que genera un objeto NSString temporal, entonces le echamos mano a la clase NSAutoreleasePool en caso que nos interese retornar un de los objeto temporales que se generaron en la operacion, o en caso contrario usamos la comoda instruccion @autoreleasepool{ statements }. Todo esto con el fin de liberar esos objetos temporales una vez terminemos nuestra operacion
Aun mantengo este post por motivos históricos, hoy por hoy recomendaría a todos usar ARC y olvidarse de la gestión manual de la memoria.