4

iOS アプリに専用のネットワーク スレッドがあります。スレッドの -main メソッドは次のようになります。

- (void)main
{   
    @try 
    {       
        while (!self.isCancelled) 
        {
            NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

            [[NSRunLoop currentRunLoop] run];

            [pool drain];
        }
    }
    @catch (NSException * e) 
    {
        NSLog(@"%@", e);
    }
}

http 操作 (同時実行ループベースの NSOperation サブクラス) が取り込まれた NSOperationQueue があります。runloop スレッドを必要とする http 操作があることを知っているので、実行する作業がないときに runloop スレッドが実行されないようにしたいと考えています。NSRunLoop は、やるべきことがないときに自動的にスリープすることをどこかで読みました (参考になりました)。しかし、Instruments のタイム プロファイラーを使用したところ、runloop スレッドが常にアクティブであることがわかりました。

このリソースの浪費を防ぐために、NSRunLoop と NSThread の使用をどのように調整できますか?

4

0 に答える 0