The problem is not that you are flowing as such, but that you are working in a while loop.
Automatically issued dates grow in the auto-update pool, because the pool is empty only in idle mode in the execution cycle.
One solution is to create a local autostart pool within the while scope
while (foo) { NSAutoreleasePool *aPool = [[NSAutoreleasePool alloc ] init]; NSDate *currentDate = [NSDate date];
When you release the pool in the local area, it will immediately lose the requested auto-implemented date.
source share