Автозапуск пулов привязан к потокам. Если вы создаете поток с помощью executeSelectorInBackground, вам нужно создать и уничтожить пул авто-релиза для себя. Так что вам нужно, чтобы startupStuff выглядел так:
- (void)startupStuff:(id)sender
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// ... everything else you were doing ...
[pool drain]; //see comment below
}
Дополнение: Ричард ниже указывает, что сток предпочтительнее выпуска, чтобы признать, что (на рабочем столе, но еще не на iOS) вы можете работать с сборщиком мусора. Определенные слова Apple ( источник ):
В среде сбора мусора отправка сообщения «сток» в пул запускает сборку мусора при необходимости; релиз, однако, не является опцией. В среде с подсчетом ссылок утечка имеет тот же эффект, что и выпуск. Поэтому, как правило, вместо выпуска следует использовать сток.
Итак, я исправил свой пример. Достаточно сказать, что этот конкретный вопрос касается iPhone, и в настоящее время на этом устройстве нет сборки мусора. Таким образом, исходный плакат находится в лагере «сток имеет тот же эффект, что и выпуск», а не «сток ...» запускает сборку мусора, если это необходимо; релиз, однако, является лагерем запретного действия.