我有一个经典的 Apple 可达性类,它不适合 ARC。它很好地定义了网络,但它有一些我无法弄清楚的错误。我保持整个类不变,在另一个类的方法中,我实现了以下方法来定义连接性。这是我的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 不可用时触发。
如何更改它以使其更快地看到 Internet 连接,而不会偶尔出现“无网络”消息?