我正在使用以下代碼調用主線程中dispatch_async
內部的[self.tableView reloadData]
方法。它工作正常,並按預期。在Web服務異步回調上更新UITableView
-(void) setup
{
_genres = [NSMutableArray array];
[[MyAppClient sharedClient] getGenres:^(NSURLSessionDataTask *task, id responseObject) {
[responseObject enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
Genre *genre = [[Genre alloc] initWithDictionary:obj];
[_genres addObject:genre];
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});
}];
} failure:^(NSURLSessionDataTask *task, NSError *error) {
}];
}
即使我使用它沒有dispatch_async
呼叫UITableView
重裝就好了。我的問題是,如果在上述情況下有dispatch_async
的好處。
我的理由是因爲我更新它運行在主線程的UI
,這就是爲什麼我使用dispatch_async(main_queue,block)
將呼叫移到枚舉之外的好通話。我忽略了那個細節。 – rmaddy
謝謝!接得好!我修好了:) –