Автозапуск пула очищается только после завершения цикла выполнения, обычно в конце метода, когда управление возвращается пользователю. Если вы обнаружите, что проходите через цикл много раз, что приведет к созданию большого количества автоматически выпущенных объектов (которые будут накапливаться в памяти до завершения вашего метода), вы можете создать локальный пул автоматического выпуска и опустошить его самостоятельно. 1001 *
Вы можете создавать и истощать локальный пул автоматического выпуска, просто создавая и выпуская новый.
for (i=0; i<10000; i++) {
NSAutoreleasePool *localPool = [[NSAutoreleasePool alloc] init];
NSString *aString = [NSString string];
[pool drain];
}
Вероятно, производительность снизится, если вы создадите и освободите слишком много пулов, поэтому вы можете захотеть проверить определенное количество итераций (скажем, каждые 100 циклов или около того) для создания и выпуска пулов. Нет заданного номера, поэтому вам придется немного поиграться.
ОБНОВЛЕНИЕ: обновлено с [pool release]
до [pool drain]
для обеспечения будущей совместимости со сборкой мусора по рекомендации Марка Шарбонно.