Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone Can';我不能让Apple的可达性类正确定义网络_Iphone_Objective C_Ios_Cocoa Touch_Reachability - Fatal编程技术网

Iphone Can';我不能让Apple的可达性类正确定义网络

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 {

我有一个经典的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连接,而不会偶尔出现“无网络”消息?

我最终使用了来自的可达性版本。 它非常好用。此外,它的ARC和iOS 5(及以上)准备就绪

你可以在这里找到它:


谢谢,托尼

一篇关于可达性的使用和滥用的有趣文章可能会引起您的兴趣:@jrturton感谢您的精彩文章!别谢我,谢谢这个家伙:把头衔换了。可达性本身并不重要broken@Daij-Djan我更改了标题以防万一;)