我的iOS应用程序中有一个专用的网络线程。线程的-main方法如下所示:
- (void)main
{
@try
{
while (!self.isCancelled)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[[NSRunLoop currentRunLoop] run];
[pool drain];
}
}
@catch (NSException * e)
{
NSLog(@"%@", e);
}
}
我有一个NSOperationQueue填充了http操作(并发的,基于运行循环的NSOperation子类)。既然我知道什么时候需要runloop线程的http操作,我希望能够阻止runloop线程在没有工作要做时执行。我读到某处(有帮助,我知道)NSRunLoop在没有工作要做的时候会自动进入睡眠状态。但是,我使用了仪器的时间分析器,发现runloop线程始终处于活动状态。
如何安排使用NSRunLoop和NSThread来防止资源浪费?