iOS主线程更新UI
1.更新UI的代码必须在主线程中执行才起作用。
2. 如果不在主线程,需要调用dispatch_sync(dispatch_get_main_queue(), ^(void)block),把更新UI的代码放到block中执行(其它类似的办法也可以)。
比如:
[[SceneryModel sharedModel]asyncRefreshCProvinceWithCompletionBlock:^{
//把更新UI的代码放到主线程中
dispatch_sync(dispatch_get_main_queue(), ^{
[self.collectionView reloadData];
[self.collectionView.mj_header endRefreshing];
NSLog(@"%@:数据已更新!",NSStringFromClass([self class]));
});
}];
3.如果已经在主线程中,千万不要画蛇添足地把更新UI的代码放到block中执行,否则又会导致UI不更新!切记!