У меня есть фрагмент сетевого кода, который использует AsyncSocket, но перемещает его в отдельный цикл запуска. Я создаю этот runloop со следующим фрагментом кода:
[NSThread detachNewThreadSelector:@selector(_workerLoop) toTarget:self withObject:nil];
и вот как выглядит мой _workerLoop (они оба в одном классе):
-(void)_workerLoop {
workerLoop = [[NSRunLoop currentRunLoop] retain];
while(keepWorkerLoopRunning) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[workerLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.5f]];
[pool release];
}
[workerLoop release];
workerLoop = nil;
}
Теперь, согласно документам, NSThread сохранит цель, и, поскольку этот поток будет завершен только при отключении AsyncSocket, невозможно освободить и освободить этот объект, пока не отключится сокет.
Как я могу это исправить или, может, я что-то не так делаю?