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