如何在时间延迟方面停止主线程序列?

时间:2011-11-09 20:10:40

标签: iphone objective-c ios cocoa-touch ipad

我正在尝试加载UIActivityIndi​​catorView自定义类,但是,我试图在我的UIActivityIndi​​catorView显示之后在新视图弹出之前嵌入通用时间延迟。我尝试了执行afterDelay部分,但这不应该停止主线程,而是在5秒后执行一些事情。我正在寻找的东西实际上可以停止执行,直到5秒钟过去。无论如何在iPhone上这样做?我当然可以编写另一个方法并在一定的延迟后在那里调用新的视图弹出窗口,但是我必须在每个viewController上调用这种方式。有没有通用的方法来绕过这个?

2 个答案:

答案 0 :(得分:1)

你不想这样做,阻止主线程是坏的,可以导致8badf00d。考虑重新设计解决方案以避免阻塞主线程。

答案 1 :(得分:1)

在退出主运行循环之前,您的UI活动指示器不会显示。停止执行应用程序的方法是退出(返回)当前方法。

要在5秒后完成操作,请将其放入其他方法,并使用NSTimer或延迟操作队列重新启动应用程序的处理。这是不会导致UI(和活动指标)冻结的通用解决方案。