在iOS5中使用Apple的Reachability代码我收到一堆编译错误,如下所示。关于这里发生了什么的任何想法?我正在使用ARC,因此我略微编辑了标准代码,以删除autorelease/retain
和NSAutoReleasePool
。
架构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提供可行的可达性代码?
答案 0 :(得分:60)
我为ARC和iOS5写了一个干净的'drop in'版本的可达性 - 你可以在这里找到它:https://github.com/tonymillion/Reachability
答案 1 :(得分:44)
您真的不需要ARC版本的可达性,只需为可达性文件禁用ARC
在MULTIPLE文件上禁用ARC :
您还缺少一个框架。添加 SystemConfiguration框架。
答案 2 :(得分:11)
我rearranged them for IOS 5 and arc他们正在接受测试
请不要忘记在项目中添加 SystemConfiguration.framework
答案 3 :(得分:10)
我刚发现这可能有所帮助。感谢作者(这不是我的)!
答案 4 :(得分:7)
Apple的可访问性已更新至版本3,现在支持ARC iOS5 +
答案 5 :(得分:3)
您需要添加systemConfiguration.framework以使Reachability工作。
答案 6 :(得分:2)
我知道这个帖子已经老了,但是如果有人感兴趣你可以通过禁用ARC for Reachability.m来解决这个问题。 Look at this post
答案 7 :(得分:1)
Tony,即使是非ARC项目,你的班级也能正常工作吗? 我可以在我的consolle中看到很多确定可达性:dealloc ,我不知道它是否正常! 我使用此方法检查连接(是我用户可更新性的唯一地方)
-(BOOL)checkConnection{
BOOL connessione = FALSE;
Reachability *wifiResouce = [[Reachability reachabilityForLocalWiFi] retain];
Reachability *phoneResouce = [[Reachability reachabilityForInternetConnection] retain];
NetworkStatus netStatusWiFi = [wifiResouce currentReachabilityStatus];
NetworkStatus netStatusPhone = [phoneResouce currentReachabilityStatus];
if(netStatusWiFi == NotReachable){
if(netStatusPhone == ReachableViaWWAN){
connessione = TRUE;
}
}else if(netStatusWiFi == ReachableViaWiFi){
connessione = TRUE;
}
[phoneResouce release];
[wifiResouce release];
return connessione;
}