我的主要UIViewController应该在加载时检查一些数据更新,如果发现任何更新,则会添加一个不透明的子视图来显示进度等等。
假设该方法名为checkUpdates,因此在我的app委托中,我执行以下操作:
[window addSubview:viewController.view];
[window makeKeyAndVisible];
[viewController checkUpdates];
方法就像
- (void) checkUpdates {
// add the opaque progress view
[self.view addSubview:progress.view];
[progress setMessage: @"Checking for updates ..."];
// ... perform the update ...
// remote the progress view
[progress.view removeFromSuperview];
}
理论上应该加载视图并且应该看到更新过程,但问题是视图在此阶段被冻结,并且当更新过程完成时我能够与它进行交互。
有什么想法吗?
答案 0 :(得分:0)
由于UI在应用程序的主线程上运行,如果您在主线程上执行“工作”任务,您也将阻止UI,因此它看起来会被冻结。
您可能需要考虑使用NSOperationQueue
或等效的东西来剥离另一个线程来完成您的工作,以便UI可以继续独立处理更新。