Я использовал следующий код для создания новой темы:
[NSThread detachNewThreadSelector:@selector(backgroundMethod:)
toTarget:self
withObject:paramObject];
А затем в backgroundMethod я настроил новый пул автоматического выпуска как обычно:
-(void)backgroundMethod:(id)parameter
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//method stuff here...
[pool drain];
}
Но как-то пул авто-релиза не работает. При запуске кода вывод на консоль выглядит следующим образом:
2011-02-17 00:38:16.928 audioEngine[13670:af03] *** __NSAutoreleaseNoPool(): Object
0x4b22370 of class NSThread autoreleased with no pool in place - just leaking
Ранее я использовал несколько потоков одним и тем же способом, и у меня не было подобных проблем - что я делаю не так?
Любая помощь очень ценится! Спасибо:)
РЕДАКТИРОВАТЬ: Хорошо, это кажется немного странным - я создал пул автоматического выпуска в методе, из которого создается новый поток, и проблема исчезла. Любая идея относительно того, почему это может быть и какой правильный способ это исправить? Я бы предпочел не иметь случайного пула автоматического выпуска в моем коде, не зная, что он на самом деле делает и почему проблема исчезла.
EDIT2: Вот код, создающий основной пул автоматического выпуска:
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}