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