0

我的主 UIViewController 应该在加载时检查一些数据更新,如果发现任何更新,则添加不透明的子视图以显示进度等等。

假设该方法称为 checkUpdates,因此在我的应用程序委托中,我执行以下操作:

[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];
}

理论上应该加载视图并且应该看到更新过程,但问题是视图在这个阶段只是被冻结,当更新过程完成时,我可以与之交互。

任何想法?

4

1 回答 1

0

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

您可能需要考虑使用NSOperationQueue或类似的方式分拆另一个线程来完成您的工作,以便 UI 可以继续独立处理更新。

于 2010-10-15T18:15:26.750 回答