我有一段使用AsyncSocket的网络代码,但将其移动到一个单独的runloop。我用以下代码创建这个runloop:
[NSThread detachNewThreadSelector:@selector(_workerLoop) toTarget:self withObject:nil];
-(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断开连接时终止,因此在socket断开连接之前,不可能释放和释放此对象。
我该怎么解决这个问题,或者我做错了什么?