Iphone UIViewController在更新期间冻结

Iphone UIViewController在更新期间冻结,iphone,uiviewcontroller,freeze,progressdialog,Iphone,Uiviewcontroller,Freeze,Progressdialog,我的主UIViewController在加载时应该检查一些数据更新,如果发现任何更新,将添加一个不透明的子视图以显示进度等等 假设该方法称为checkUpdates,因此在我的应用程序委托中,我执行以下操作: [window addSubview:viewController.view]; [window makeKeyAndVisible]; [viewController checkUpdates]; 方法如下 - (void) checkUpdates { // add the

我的主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];
}
理论上,应该加载视图并查看更新过程,但问题是视图在这个阶段被冻结,当更新过程完成时,我可以与它交互


有什么想法吗?

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


你可能想考虑使用一个等价于其他线程来完成你的工作,这样UI就可以独立地处理更新。如果我尝试访问线程内的应用程序委托成员,我会收到“发送到解除分配实例的消息”:S@Simone那你做错了什么。但这与使用

NSOperationQueue
或其他线程相关功能本身无关。我的答案是:你不能在主线程上执行“工作”任务,因为你会阻塞UI。你的问题没有其他类型的解决方案。