У меня есть специальная сетевая тема в моем приложении для 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 автоматически спит, когда у него нет работы. Однако я использовал профилировщик времени Instruments и увидел, что поток runloop всегда был активным.
Как я могу организовать использование NSRunLoop и NSThread для предотвращения этой растраты ресурсов?