У меня есть фрагмент сетевого кода, который использует AsyncSocket, но перемещает его в отдельный цикл выполнения. Я создаю этот цикл выполнения со следующим фрагментом кода:
[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, невозможно освободить и освободить этот объект, пока сокет не отключится.
Как это исправить или может я что-то не так делаю?