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 の使用をどのように調整できますか?