Reachability 示例代码中的 SCNetworkReachabilityGetFlags 需要很长时间才能返回

Posted

技术标签:

【中文标题】Reachability 示例代码中的 SCNetworkReachabilityGetFlags 需要很长时间才能返回【英文标题】:SCNetworkReachabilityGetFlags in Reachability sample code takes too long to return 【发布时间】:2010-12-16 13:32:51 【问题描述】:

我在 iPhone4 上使用 ios4.1。我也在使用最新版本的可达性代码。我的设备没有连接,但似乎代码等待超时,否则设备需要很长时间才能报告可达性状态。

在使用 iPhone3gs 的 iOS4.0.1 上似乎不会发生这种情况。

还有其他人遇到过这个吗?除了开始一个新线程之外,还有什么方法可以解决它?

【问题讨论】:

【参考方案1】:

你确定你是在异步使用它吗?

来自 Apple 的关于 Reachability 项目的文档 ReadMe.txt:

可达性示例演示 的异步使用 SCNetworkReachability API。您可以使用 API 同步,但不 通过 hostName 发出同步检查 在主线程上。如果设备 无法访问 DNS 服务器或位于 网络慢,同步调用 SCNetworkReachabilityGetFlags 功能最多可以阻止 30 秒试图解决 主机名。如果这发生在主 线程,应用程序看门狗将 20秒后杀死应用程序 不活动。

所以,我认为你是对的 - 启动一个后台线程来处理它。

【讨论】:

感谢您的回复。我认为最好的办法就是将应用程序的可访问性全部移除。就我的目的而言,应用程序逻辑已经足够好了。所以基本上,我无法在这里决定正确的答案。干杯。 不用担心 - 很高兴它有帮助。

以上是关于Reachability 示例代码中的 SCNetworkReachabilityGetFlags 需要很长时间才能返回的主要内容,如果未能解决你的问题,请参考以下文章

使用 Reachability 2.2 检查 Internet 连接

线程1:自定义框架Swift中Reachability框架中的signal SIGABRT

iOS 可达性和应用挂起/恢复行为

天呐,我居然可以隔空作画了

Swift iOS -AshleyMills Reachability 每隔几秒就会打开和关闭 wifi

Swift中的Network Reachability