ここで私は議論のための非常に興味深いトピックを持っています。あるいは、より良いアプローチのための提案が必要だと言うことができます.
これが私のコードです
+ (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 も存在することを意味します (確認する必要はありません)。したがって、ここでは 1 回の計算で完了です。
- hostReachability が false を返した場合は、ネットワーク接続が原因であるかどうかを確認しています。したがって、2 つの計算。
しかし、通常、コードは最初に netConnectivity を検証し、問題がなければ hostReachability を検証します。
したがって、ほとんどの場合、2 つの計算が必要になります。これは、私のやり方とは対照的です。
どちらがより良いアプローチだと思うか提案してください。