另一種方式來做到這一點是塊:
大優點:你不需要創建一個額外的方法:)
- (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
。所以如果你沒有修改用戶界面或其他非線程安全的東西在那裏,你想使用這種方法:)否則去@亞歷克斯的方法
你自己回答了這個問題。您正在同步進行輪詢,所以UI從來沒有機會更新以禁用按鈕。 – Flyingdiver