У меня есть приложение iPhone
, в котором я хочу выполнять метод в фоновом режиме каждую 1
секунду.
Итак, в моем главном потоке у меня есть следующий код на UIViewController
viewDidLoad()
:
[NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(repeatedMethod) userInfo:nil repeats:YES];
следующими методами:
-(void)repeatedMethod {
if(!processIsRunning) {
processIsRunning = YES;
[self performSelectorInBackground:@selector(runProcessInBackground:) withObject:myImage];
}
}
-(void)runProcessInBackground:(UIImage *)image {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
... Some operations ...
... also call a method on the main thread which sets isProcessRunning to NO
[pool release]
}
Как я это настроил, новый поток создается каждую секунду (если только процесс еще не запущен, благодаря моему processIsRunning
флагу).
Теперь мои вопросы:
(1) Это лучший способ сделать это?Или есть более подходящий способ сохранить и повторно использовать фоновый поток?
(2) Какой самый быстрый способ сделать это?Неужели я теряю время, раскручивая новые фоновые потоки при каждом вызове метода?
Код работает, как есть, просто немного медленнее, когда я запускаю все в основном потоке (что я в конечном итоге и получаюне хочу делать).
Любой совет будет отличным!Кто-нибудь имел дело с этим типом вопроса раньше?
Большое спасибо, Бретт