Проблема не в том, что вы сами производите утечку, а в том, что вы работаете в цикле while.
Даты автоматического выпуска растут в пуле автоматического выпуска, потому что пул очищается только во время простоя в цикле выполнения.
Одним из решений является создание локального пула автоматического выпуска в рамках времени
while (foo) {
NSAutoreleasePool *aPool = [[NSAutoreleasePool alloc ] init];
NSDate *currentDate = [NSDate date];
// other computational foo
[aPool release]
}
Когда вы освобождаете пул в локальной области, он немедленно удалит запрошенную вами дату автоматического выпуска.