2013-05-06 29 views
1

我有一个应用程序,在开始时它会检查用户的位置,然后获取该位置的天气。主要是风向和速度。不同类别的GCD

它执行正常检查以查看它是否具有Intenet连接,但我发现如果存在连接,但非常缓慢,则应用程序会在启动屏幕上冻结(执行启动时检查)。

我有一个类,这样做,这是在启动时调用后,主屏幕加载。俯视,GCD似乎是正确的路要走,但我可以得到的答案是显示在主页屏幕何时完成获取数据?主要踏板将会离开或者绕过那个班级,并且已经到达主屏幕。

我需要也许使用像通知中心的东西来帮助标签更新和重新加载?

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

PS。我正在努力让应用程序iOS 5.1保持旧iPad的开心。

+0

你如何检查互联网连接?为什么?在最新的WWDC上,每个开发者都被鼓励跳过该部分,并直接进行网络通信,并在反馈的'FALSE'分支中处理_no-connection_事件,因为_Reachability_类的方法非常缓慢。 – holex 2013-05-06 18:09:28

+0

我有一种方法可以检查我是否可以访问apple.com – Jorgen 2013-05-06 18:48:37

回答

0

GCD似乎是正确的选择,但是在获取数据完成后,我能否在主屏幕上的标签中显示答案?主要踏板将会离开或者绕过那个班级,并且已经到达主屏幕。我是否需要使用类似Notification Center的内容来帮助标签更新和重新加载?

是的,我认为你在这里的轨道非常好。让我们保持这两个问题分开,但:

  • 做你的工作背景,仍处于GCD后,你会回来到主线程,因为你现在要更新的接口。这很简单直接。

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

    尽管如此,你应该考虑一下你的架构,因为可能比通知更好。一旦你回到主线程,为什么你不在一个地方,你有知道是否存在正确的视图控制器并直接与它通话。我并不是说通知是坏的/错误的!我自己使用了这个解决方案,而通知是一种非常标准的从NSOperation回来的方式。我只是说,给它一点思考。