Usando NSDate en While loop

Quiero get la date actual usando [Fecha de la date NS] en un bucle While. Logro esto haciendo así:

while (interval > 0.0) { NSDate *currentDate = [[NSDate alloc] init]; currentDate = [NSDate date]; interval = (float) [newDate timeIntervalSinceDate: currentDate] / 60; [currentDate release]; } 

No sé por qué las fugas de la memory muestran que hay una gran cantidad de memory que se ha filtrado. Por favor, guíame, que es la mejor forma de cumplir mi tarea.

El problema no es que estás filtrando per se sino que estás corriendo en un ciclo de time.

Las dates de liberación automática están creciendo en el grupo de autorelease porque el grupo solo se vacía en el time de inactividad en el ciclo de ejecución.

Una solución es crear un grupo de autorelease local dentro del scope del time

  while (foo) { NSAutoreleasePool *aPool = [[NSAutoreleasePool alloc ] init]; NSDate *currentDate = [NSDate date]; // other computational foo [aPool release] } 

Cuando suelte el grupo en el ámbito local, inmediatamente dejará la date autoreleased que solicitó.

En línea NSDate *currentDate = [[NSDate alloc] init]; creas un nuevo object, que deberías lanzar. En línea currentDate = [NSDate date]; no suelta un object antiguo, solo hace un puntero para apuntar a otro object. En línea [currentDate release]; suelta un object creado en la segunda línea de un bucle, lo que puede causar un error (ese object se marca como autorelease uno y iOS lo limpiará por usted). Debe reescribir su código como:

 while (interval > 0.0) { NSDate *currentDate = [NSDate date]; interval = (float) [newDate timeIntervalSinceDate: currentDate] / 60; } 

No necesita la primera línea NSDate *currentDate = [[NSDate alloc] init]; . Puede asignar directamente la [date de la date NS] a la date actual .

 NSDate *currentDate = nil; while (interval > 0.0) { currentDate = [NSDate date]; interval = (float) [newDate timeIntervalSinceDate: currentDate] / 60; }