我有一个应用程序,它在每次启动时使用 Rails 后端与服务器同步数据。API 完全可以工作,但是当需要刷新界面时,我遇到了界面变得无响应的问题。
我目前正在使用 GCD 开始同步:
Sync *sync = [[Sync alloc] init];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[sync force_sync:@""];
[appModel updateSyncTime:current_time];
});
同步完成后,我让 Sync 对象向应用程序发送 NSNotification 以便界面刷新:
dispatch_async(dispatch_get_main_queue(), ^{
[[NSNotificationCenter defaultCenter] postNotificationName:@"Sync-Completed" object:self];
});
收到通知后,我的其他类只是简单地重新加载 UITableView 中的数据,如下所示:
- (void)notificationReceived:(NSNotification *)notification {
[dataTable reloadData];
}
直到收到通知为止,UI 都是完全响应的。收到通知后,在刷新完成之前,您无法在其他 UI 元素之间滚动 UITableView。我敢肯定有更好的方法来做到这一点,但如何?
提前致谢!