Pregunta

Si creo una NSMutableString y luego soltarlo, no debería ser la cuenta de retención 0?

Mi retener estancias de conteo 1.

NSMutableString *text = [[NSMutableString alloc]init];

[text release];

NSLog(@"retain count %d ", [text retainCount]);

Me estoy perdiendo algo?

gracias.

¿Fue útil?

Solución

No hay ninguna garantía de que retainCount devolverá el valor correcto en cualquier momento durante el ciclo de vida del objeto. Si ha creado un NSMutableString usando [[NSMutableString alloc] init] y que está llamando la liberación una vez sobre ella, que está haciendo lo correcto y no debe preocuparse por ello.

Otros consejos

Apple dice en su documentación que retainCount es de ninguna utilidad para la gestión de la memoria debido a que los marcos y las piscinas autorelease pueden retener de un objeto, incluso si no está desbloqueada. http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html#//apple_ref/occ/intfm/NSObject/retainCount

Dado que usted está haciendo esto para fines de depuración, me gustaría sugerir que utilice categorías para añadir algo de código de prueba a una clase existente. En cualquier momento que retener o soltar el objeto de forma manual, se podría llamar a sus nuevos métodos y el uso que el seguimiento de su uso de la memoria.

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