iOS 5.1 可达性

Posted

技术标签:

【中文标题】iOS 5.1 可达性【英文标题】:iOS 5.1 Reachability 【发布时间】:2012-03-14 02:20:11 【问题描述】:

我正在尝试在 ios 5.1 中使用可达性,但它给了我一个 Match-o Linker 错误。 我正在使用 Xcode 4.3 并使用 armv6 和 armv7 构建我的应用程序。我读过 Reachability 与 armv7 不兼容,这可能会导致错误。真的吗? 如果是这样,是否有任何解决方法可以让我的应用程序检查互联网连接? 是的,我都进口了

Reachability.h

SystemConfiguration.framework

我的示例实现代码如下:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil];    
internetReachable = [Reachability reachabilityForInternetConnection];
[internetReachable startNotifier];    
hostReachable = [Reachability reachabilityWithHostName: @"www.apple.com"];
[hostReachable startNotifier];

提前感谢!

【问题讨论】:

【参考方案1】:

https://github.com/tonymillion/Reachability

iOS5/GCD/ARC 友好版

【讨论】:

你甚至可以使用块来代替 NSNotificationCenter 不是原始可达性对我不起作用的问题,它没有触发网络不可达通知。这个库效果更好!谢谢 @Tony 看起来这些块在 iOS 5.1 上工作。我有一种方法可以每隔一小时检查一次与我的服务器的连接,以发送调查结果,但并非总是会执行。 UnreachableBlock 方法反应良好,但reachableBlock 并非总是如此。 嗨 Tony:为什么在检查可达性时不会发布通知?调试显示它正在到达reachabilityChanged 中的postNotificationName 代码,但在视图控制器中从未观察到通知。我尝试使用块,它显示可达,但我想了解这两种方法。【参考方案2】:

不确定你是否已经解决了这个问题。

但是,如果您阅读了 Xcode 4 中突出显示的实际错误,并且如果它说类似

“ld:重复符号 _OBJC_IVAR__Reachability.reachabilityRef in ...链接器命令失败,退出代码为 1(使用 -v 查看调用)”

也就是说,您已经在项目中的某个地方包含了 Reachability.h 和 Reachability.m,现在您已经包含了一个副本。

删除 Reachability.h 和 Reachability.m 的所有重复副本,并在项目文件中的某处仅保留 1 个副本。

【讨论】:

以上是关于iOS 5.1 可达性的主要内容,如果未能解决你的问题,请参考以下文章

删除主机时,iOS 可达性无法识别

iOS:可达性和 AFNetworking

iOS:AFNetworking 的可达性

iOS8 的可达性问题

iOS 中的语音可达性

ios上网络类型的可达性错误检查