Pregunta

Tengo un NSTimer que se dispara cada segundo, y en ese segundo actualizo una UILabel configurando la propiedad de texto de esta manera:

remainglbl.text = [NSString stringWithFormat:@"%i:%02i", var1, var2];   

Funciona bien, pero cuando lo ejecuto en xcode con Start With Performance Tool - > Fugas, parece que el recuerdo sigue escalando y trepando y trepando.

Según mi entendimiento, la cadena debería ser lanzada automáticamente (aunque nunca veo que la memoria disminuya o deje de aumentar).

¿Es esto una pérdida de memoria? ¿Hay una mejor manera de hacer esto para mantener mi uso de memoria bajo control?

¡Gracias!

Actualización: el código para crear el temporizador es el siguiente:

timeTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(changeTime:) userInfo:nil repeats:YES];  
El

código para limpiar al finalizar el temporizador es el siguiente:

[timeTimer invalidate];
[timeTimer release];
timeTimer = nil;

¿Hay algo malo con esto? Pensé que la memoria podría liberarse una vez que termine el temporizador, pero no lo hace.

¿Fue útil?

Solución

Creo que el problema fue que no entendía las herramientas de rendimiento. La ejecución con el Monitor de actividad no muestra un aumento en el uso de memoria.

Otros consejos

Solo por curiosidad, ¿se sigue produciendo el problema si usa [restoLbl setText:] en lugar de configurar la propiedad? Su código se ve bien ... la memoria debe limpiarse ya que stringWithFormat libera automáticamente la cadena.

Otra cosa para probar: cuando crea hilos en Objective-C, debe envolver todo el código en un NSAutoreleasePool para que se limpien las cosas que crea durante la ejecución del hilo. Eso no debería hacer una diferencia aquí, ya que uno ya debería existir, pero vale la pena intentarlo.

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