Другой способ сделать это с блоками:
Big Pro: вам не нужно создавать дополнительный метод:)
- (IBAction)btnQuickCheckClick:(id)sender {
//UI changes must be done in the main thread
self.btnQuickCheck.enabled = NO;
//do your thing in a background thread
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT ,0);
dispatch_async(queue, ^(){
@try {
//do your thing here
[self pollRouter];
} @catch (NSException * e) {
//handle the exception, if needed
} @finally {
//change to the main thread again and re-enable the UI
dispatch_queue_t mainQueue = dispatch_get_main_queue();
dispatch_async(mainQueue, ^(){
self.btnQuickCheck.enabled = YES;
});
}
});
}
Это запустит pollRouter
в фоновом потоке. Так что, если вы не модифицируете пользовательский интерфейс или другие вещи, не поддерживающие потоки, вы можете использовать этот подход :) В противном случае перейдите к подходу @ Alex