我有一个应用程序,在开始时检查用户的位置,然后获取该位置的天气。主要是风向和速度。
它正常检查它是否有Intenet连接,但我发现如果有连接,但很慢,应用程序在启动屏幕上冻结(在启动时进行检查)。
我有一个这样做的课程,在启动时调用,然后加载主屏幕。环顾四周,GCD似乎是正确的方法,但我可以得到答案显示在家里的标签屏幕何时完成获取数据?主踏板将离开,或者更确切地绕过那个级别并到达主屏幕。
我是否需要使用Notification Center之类的东西来帮助标签更新和重新加载?
感谢您提出任何想法或代码段。 约根
PS。我试图保持应用程序iOS 5.1以保持旧iPad的快乐。
答案 0 :(得分:0)
GCD似乎是正确的方法,但是在完成获取数据后,我可以得到答案显示在主屏幕的标签中吗?主踏板将离开,或者更确切地绕过那个级别并且到达主屏幕。我是否需要使用Notification Center之类的东西来帮助标签更新和重新加载?
是的,我认为你在这里走得很好。但是,让我们将这两个问题分开来:
在完成后台工作之后,仍然在GCD中,你将回到主线程,因为你现在想要更新界面。这很简单直接。
如果您遇到通信问题,通知可能是一个很好的解决方案。您可以广播更新该标签的需要,如果正确的视图控制器存在并正在侦听,它将获得该信息。
尽管如此,你应该考虑一下你的架构,因为可能有比通知更好的方法。一旦你回到主线程,为什么你不在一个你知道的地方是否存在正确的视图控制器并直接与它交谈。我不是说通知是坏/错!我自己也使用过这个解决方案,并且通知是一种非常标准的方式,比如NSOperation。我只是说,试一试。