将基于运行循环的NSThread置于睡眠状态不确定的时间

时间:2011-03-18 15:52:13

标签: cocoa sleep nsthread nsoperationqueue nsrunloop

我的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来防止资源浪费?

0 个答案:

没有答案