在这里,我有一个非常有趣的话题可供讨论,或者您可以说我需要一个更好的方法的建议。
这是我的代码
+ (BOOL) isConnected
{
BOOL flag = TRUE;
if (![self isHostReachable])
{
flag = FALSE;
NSString* alertTitle= @"";
NSString* alertMessage= @"";
if (![self isInternetReachable])
{
alertTitle = @"Network unavailable";
alertMessage = @"We can't connect to the Internet. Check your settings/connection.";
}
else
{
alertTitle = @"Server not responding";
alertMessage = @"Server not responding at the moment. Please try again later. Sorry for inconvenience";
}
UIAlertView *alert=[[UIAlertView alloc] initWithTitle:alertTitle
message:alertMessage
delegate:self
cancelButtonTitle:@"Close"
otherButtonTitles:nil];
[alert show];
}
return flag;
}
+ (BOOL) isInternetReachable
{
Reachability *netReachability = [Reachability reachabilityForInternetConnection];
NetworkStatus netSat = [netReachability currentReachabilityStatus];
return (!(netSat == NotReachable));
}
+ (BOOL) isHostReachable
{
Reachability *hostReachability = [Reachability reachabilityWithHostname: [Connection returnHostName]];
NetworkStatus netSat = [hostReachability currentReachabilityStatus];
return (!(netSat == NotReachable));
}
在我的代码中,我曾经调用“isConnected”方法来检查连接状态,然后再向我的服务器询问数据。
在方法中,我首先检查了hostReachability。我这样做的想法是节省计算时间。
- 如果 hostReachability 返回 true,则表示 netConnectivity 也存在(无需验证)。所以在这里我们只完成了一次计算。
- 如果 hostReachability 返回 false,那么我正在检查它是负责它的网络连接。因此进行了两次计算。
但是通常看到代码先验证netConnectivity,如果没问题,再验证hostReachability。
所以大多数时候两次计算,这与我完成工作的方式形成鲜明对比。
请建议您认为哪种方法更好?