我正在使用以下代码调用主线程中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
谢谢!接得好!我修好了:) –