4

我的 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 子类)。现在,因为我知道什么时候有 http 操作需要 runloop 线程,所以我希望能够防止 runloop 线程在没有工作要做的时候执行。我在某处读到(有帮助,我知道)NSRunLoop 在没有工作时会自动休眠。但是,我使用 Instruments 的时间分析器并看到 runloop 线程始终处于活动状态。

如何安排我对 NSRunLoop 和 NSThread 的使用以防止这种资源浪费?

4

0 回答 0