在iOS5中需要ARC的可达性版本

mil*_*ort 32 wifi reachability ios5 automatic-ref-counting

在iOS5中使用Apple的Reachability代码,我得到了一堆编译错误,如下所示.关于这里发生了什么的任何想法?我正在使用ARC,所以我稍微编辑了标准代码以删除autorelease/retainNSAutoReleasePool.

架构armv7的未定义符号:

"_SCNetworkReachabilityCreateWithAddress",引自:Reachability.o中的:+ [Reachability reachabilityWithAddress:]

"_SCNetworkReachabilityCreateWithName",引自:Reachability.o中的+ [Reachability reachabilityWithHostName:]

"_SCNetworkReachabilityUnscheduleFromRunLoop",引自: - Reachability.o中的[Reachability stopNotifier]

"_SCNetworkReachabilityScheduleWithRunLoop",引自: - Reachability.o中的[Reachability startNotifier]

"_SCNetworkReachabilitySetCallback",引自: - Reachability.o中的[Reachability startNotifier]

"_SCNetworkReachabilityGetFlags",引自: - Reachability.o中的[ - Reachability connectionRequired] - Reachability.o中的[Reachability currentReachabilityStatus]

ld:找不到架构armv7 clang的符号:错误:链接器命令失败,退出代码为1(使用-v查看调用)

有没有人在iOS5下为ARC提供可行的可达性代码?

Ton*_*ion 60

我为ARC和iOS5写了一个干净的'drop in'版本的可达性 - 你可以在这里得到它:https://github.com/tonymillion/Reachability

  • 嗨,你的Gist是完全错误的,如果你只需要定期检查你不需要通知代码的连接,你可以简单地测试adhoc基础上的可达性.如果您需要通知以了解网络连接状态何时发生更改(例如在IM客户端中),那么您将使用通知程序.记录代码以使用户知道在主线程上不调用块. (3认同)
  • 你错了,它将在iPad上正确返回,因为在编译iPad时定义了TARGET_OS_IPHONE - 它在编译MacOS时会自动返回NO,因为它没有kSCNetworkReachabilityFlagsIsWWAN标志.如果你检查SCNetworkReachability.h,你会看到它被包含在同一个#if语句中. (2认同)

Tib*_*abo 44

您不需要ARC版本的Reachability,只需为可达性文件禁用ARC即可

在MULTIPLE文件上禁用ARC:

  • 在Xcode中的Target/Build Phases/Compile Sources中选择所需的文件
  • 按ENTER键
  • 键入-fno-objc-arc
  • 按Enter或完成

你也有一个缺少框架.添加SystemConfiguration框架.


Rif*_*ver 11

为IOS 5重新安排了它们,并且它们正在进行测试

请不要忘记在项目中添加SystemConfiguration.framework


小智 10

我刚发现这可能会有所帮助.感谢作者(这不是我的)!

https://gist.github.com/1182373

  • 这很好 - 感谢你们两个. (2认同)

the*_*ude 7

Apple的可访问性已更新至版本3,现在支持ARC iOS5 +

以下是Apple的示例链接