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

Posted

技术标签:

【中文标题】ios上网络类型的可达性错误检查【英文标题】:Reachability error checking for network type on ios 【发布时间】:2012-05-04 04:38:26 【问题描述】:

我正在尝试使用苹果示例可达性代码以及下面的代码来检测网络连接。

Reachability *reachability = [Reachability reachabilityForInternetConnection];
    [reachability startNotifier];

    NetworkStatus status = [reachability currentReachabilityStatus];

    if(status == NotReachable) 
    
        //No internet
    
    else if (status == ReachableViaWiFi)
    
        //WiFi
    
    else if (status == ReachableViaWWAN) 
    
        //3G
    

    [reachability stopNotifier];

我还添加了系统配置。框架添加到我的项目中,并将 -fno-objc-arc 添加到编译器源以使可访问性文件与 ARC 兼容,但我目前如何收到此错误...

 "_SCNetworkReachabilityCreateWithAddress", referenced from:
          +[Reachability reachabilityWithAddress:] in Reachability.o
      "_SCNetworkReachabilityCreateWithName", referenced from:
          +[Reachability reachabilityWithHostName:] in Reachability.o
      "_SCNetworkReachabilityUnscheduleFromRunLoop", referenced from:
          -[Reachability stopNotifier] in Reachability.o
      "_SCNetworkReachabilityScheduleWithRunLoop", referenced from:
          -[Reachability startNotifier] in Reachability.o
      "_SCNetworkReachabilitySetCallback", referenced from:
          -[Reachability startNotifier] in Reachability.o
      "_SCNetworkReachabilityGetFlags", referenced from:
          -[Reachability connectionRequired] in Reachability.o
          -[Reachability currentReachabilityStatus] in Reachability.o
    ld: symbol(s) not found for architecture armv7
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

任何帮助将不胜感激

【问题讨论】:

Need Reachability version for ARC in ios5的可能重复 【参考方案1】:

确保 Reachability.m 位于 Build Phases 下的 Compile Sources 列表中,然后再次运行。还要确保 Reachability 类不是#importing 本身,而是#importing 其头文件。我还会检查您的 Reachability 类是否实际上是#importing SystemConfiguration 框架,因为您的所有错误都是基于其中找到的方法。

【讨论】:

好的,它在构建阶段,并且还导入了 SystemConfiguration.framework.. 但是不太确定你指的是什么“确保 Reachability 类不是#importing 本身,并且它正在#import 其头文件” 在 Reachability .m 中,是 #import reachability.h 还是 .m? 是的,我刚刚检查过,它会从 .m 文件中 #import .h 文件。但删除它会产生更多错误。

以上是关于ios上网络类型的可达性错误检查的主要内容,如果未能解决你的问题,请参考以下文章

在后台检测网络变化 (iOS)

检查iphone中的网络可达性后应用程序崩溃?

如何在 ios 中知道设备与哪个网络主机连接

从 WiFi 切换到 3G 时出现网络错误

检查可达性和 App Store 提交提示的正确方法

始终检查 Cocoa 中的网络可达性