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 が切断されたときにのみ終了するため、ソケットが切断されるまでこのオブジェクトを解放して割り当てを解除することは不可能です。
どうすればこれを修正できますか、それとも何か間違っているのでしょうか?