我正在使用 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;
}
}