使用带有iOS应用程序的SCNetworkReachabilityGetFlags在设备上立即崩溃

时间:2011-04-29 19:04:34

标签: crash reachability ios4

我正在使用SCNetworkReachabilityCreateWithName& SCNetworkReachabilityGetFlags用于测试iOS设备中的网络可用性。当我在模拟器中运行应用程序,或在设备上运行它,但附加到调试器时,一切都很酷。但是,当我在测试设备上运行应用程序但与调试器分离时,我遇到了崩溃。 [编辑:刚刚意识到我没有说明在哪里:在调用SCNetworkReachabilityGetFlags]奇怪的是,它不会在我第一次运行检查时发生。它发生在第二次检查。使用try / catch绝对没有任何作用。

即时崩溃。异步轮询发生时,没有延迟,应用程序只是超时。这是立竿见影的。

这完全有效。我完全不明白为什么会这样。我正准备去参加一个会议,展示应用程序及其随附的网络应用程序。我打算走在地上展示它。但现在我基本上只能将我的iPhone / iPod系在我的电脑架上。

有什么想法吗?任何不能让我连接到计算机的解决方法?任何可以解决这个问题的长期解决方案?每次执行任何网络活动时,我都会使用此方法检查网络可用性。我正在将数据同步到云,并在每次同步时运行此检查。如果网络连接突然中断,我觉得有必要让用户知情。

帮助????

这是代码段。

+ (BOOL) networkConnected {
SCNetworkReachabilityFlags flags = 0;
SCNetworkReachabilityRef netReachability;
BOOL retrievedFlags = NO;

BOOL reachable = NO;

netReachability = SCNetworkReachabilityCreateWithName(CFAllocatorGetDefault(), [EXTERNAL_HOST UTF8String]);

@try {
    if(netReachability) {
        retrievedFlags = SCNetworkReachabilityGetFlags(netReachability, &flags);
        CFRelease(netReachability);
    }

    if(!retrievedFlags || !flags)
        reachable = NO;
    else
        reachable = YES;
} @catch (NSException *ex) {
    reachable = NO;
} @finally {
    return reachable;
}

}

0 个答案:

没有答案