Iphone Can';我不能让Apple的可达性类正确定义网络
我有一个经典的Apple可达性类,它不适合ARC。它很好地定义了网络,但它有一些我无法理解的错误。我让整个类保持不变,在另一个类的方法中,我实现了以下方法来定义连接性。这是我的Iphone Can';我不能让Apple的可达性类正确定义网络,iphone,objective-c,ios,cocoa-touch,reachability,Iphone,Objective C,Ios,Cocoa Touch,Reachability,我有一个经典的Apple可达性类,它不适合ARC。它很好地定义了网络,但它有一些我无法理解的错误。我让整个类保持不变,在另一个类的方法中,我实现了以下方法来定义连接性。这是我的BOOL值,只要互联网可用,它就会改变: - (BOOL) checkForInternetConnection { [self checkNetworkStatus:nil]; if (isConnection || is3G) { return YES; } else {
BOOL
值,只要互联网可用,它就会改变:
- (BOOL) checkForInternetConnection {
[self checkNetworkStatus:nil];
if (isConnection || is3G) {
return YES;
} else {
return NO;
}
}
以下是标准可达性方法:
-(void) checkNetworkStatus:(NSNotification *)notice
{
NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];
switch (internetStatus)
{
case NotReachable:
{
isConnection = NO;
is3G = NO;
}
case ReachableViaWiFi:
{
isConnection = YES;
is3G = NO;
break;
}
case ReachableViaWWAN:
{
NSLog(@"Connected via 3G");
is3G = YES;
break;
}
}
NetworkStatus hostStatus = [hostReachable currentReachabilityStatus];
switch (hostStatus)
{
case NotReachable:
{
isConnection = NO;
is3G = NO;
NSLog(@"No Network");
break;
}
case ReachableViaWiFi:
{
NSLog(@"Connected via WiFi");
isConnection = YES;
is3G = NO;
break;
}
case ReachableViaWWAN:
{
NSLog(@"Connected via 3G");
is3G = YES;
break;
}
}
}
我遇到的问题在我得到的NSLog
输出中可以很好地看到:
2012-12-24 11:19:41.045 Custom Queue[1723:907] Connected via 3G
2012-12-24 11:19:41.046 Custom Queue[1723:907] No Network
2012-12-24 11:19:41.047 Custom Queue[1723:907] Connected via 3G
2012-12-24 11:19:41.048 Custom Queue[1723:907] No Network
几秒钟后,它告诉我一切正常:
2012-12-24 11:20:11.101 Custom Queue[1723:907] Connected via 3G
2012-12-24 11:20:11.112 Custom Queue[1723:907] Connected via 3G
2012-12-24 11:20:11.113 Custom Queue[1723:907] Connected via 3G
但由于它认为主机无法访问,并向我发出没有连接的消息,所以我有另一个功能,当互联网不可用时启动
我如何更改它,使它能够更快地看到Internet连接,而不会偶尔出现“无网络”消息?我最终使用了来自的可达性版本。 它非常好用。此外,它的ARC和iOS 5(及以上)准备就绪 你可以在这里找到它:
谢谢,托尼 一篇关于可达性的使用和滥用的有趣文章可能会引起您的兴趣:@jrturton感谢您的精彩文章!别谢我,谢谢这个家伙:把头衔换了。可达性本身并不重要broken@Daij-Djan我更改了标题以防万一;)