1

我有一个应用程序,它在启动时会检查用户的位置,然后获取该地点的天气。主要是风向和风速。

它会正常检查是否有 Internet 连接,但我发现如果有连接,但速度很慢,应用程序会在启动屏幕上冻结(在启动时进行检查)。

我有一个执行此操作的类,它在启动时调用,然后加载主屏幕。环顾四周,GCD 似乎是正确的方法,但我可以得到答案以显示在主屏幕的标签中完成获取数据了吗?主踏板会离开,或者更确切地说绕过该类并到达主屏幕。

我是否需要使用通知中心之类的东西来帮助标签更新和重新加载?

感谢您的任何想法或代码片段。约根

PS。我试图让应用程序 iOS 5.1 保持旧 iPad 的快乐。

4

1 回答 1

0

GCD 似乎是正确的方法,但是当它完成获取数据后,我可以得到答案以显示在主屏幕的标签中吗?主踏板会离开,或者更确切地说绕过该类并到达主屏幕。我是否需要使用通知中心之类的东西来帮助标签更新和重新加载?

是的,我认为你在这方面做得很好。不过,让我们将这两个问题分开:

  • 完成后台工作后,仍在 GCD 中,您将回到主线程,因为您现在想要更新界面。这很简单直接。

  • 如果您有沟通问题,通知可能是一个很好的解决方案。您可以广播更新该标签的需求,如果正确的视图控制器存在并且正在侦听,它将获取该信息。

    话虽如此,但您应该考虑一下您的架构,因为可能有比通知更好的方法。一旦你回到主线程,为什么你没有办法知道正确的视图控制器是否存在并直接与它对话。我不是说通知是坏的/错误的!我自己也使用过这个解决方案,通知是从 NSOperation 中返回的标准方式。我只是说,考虑一下。

于 2013-05-06T17:02:11.177 回答