UIViewController在更新期间冻结

时间:2010-10-15 18:10:23

标签: iphone uiviewcontroller freeze progressdialog

我的主要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];
}

理论上应该加载视图并且应该看到更新过程,但问题是视图在此阶段被冻结,并且当更新过程完成时我能够与它进行交互。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

由于UI在应用程序的主线程上运行,如果您在主线程上执行“工作”任务,您也将阻止UI,因此它看起来会被冻结。

您可能需要考虑使用NSOperationQueue或等效的东西来剥离另一个线程来完成您的工作,以便UI可以继续独立处理更新。