我在 iPhone4 上使用 iOS4.1。我也在使用最新版本的可达性代码。我的设备没有连接,但似乎代码等待超时,否则设备需要很长时间才能报告可达性状态。
这似乎不会发生在使用 iPhone3gs 的 iOS4.0.1 上。
有没有其他人遇到过这个?除了开始一个新线程之外,还有什么方法可以解决它?
我在 iPhone4 上使用 iOS4.1。我也在使用最新版本的可达性代码。我的设备没有连接,但似乎代码等待超时,否则设备需要很长时间才能报告可达性状态。
这似乎不会发生在使用 iPhone3gs 的 iOS4.0.1 上。
有没有其他人遇到过这个?除了开始一个新线程之外,还有什么方法可以解决它?
您确定要异步使用它吗?
来自 Apple 在 Reachability 项目上的文档 ReadMe.txt:
Reachability 示例演示了 SCNetworkReachability API 的异步使用。您可以同步使用 API,但不要在主线程上通过 hostName 发出同步检查。如果设备无法访问 DNS 服务器或网络速度较慢,则对 SCNetworkReachabilityGetFlags 函数的同步调用可能会阻止最多 30 秒尝试解析主机名。如果这发生在主线程上,应用程序看门狗将在 20 秒不活动后终止应用程序。
所以,我认为你是对的 - 启动一个后台线程来处理它。