0

ここで私は議論のための非常に興味深いトピックを持っています。あるいは、より良いアプローチのための提案が必要だと言うことができます.

これが私のコードです

+ (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 つの計算が必要になります。これは、私のやり方とは対照的です。

どちらがより良いアプローチだと思うか提案してください。

4

1 に答える 1

1

netConnectivity は、ネットワークが所定の位置にあり、100 の理由のいずれかが原因でダウンしていないかどうかを確認します。その後、なんらかの問題によりサーバーがダウンしている可能性があるため、ホストに到達できることが確認されます。

ネットワークが接続の失敗として検証された場合、最初にホストの検証が除外されます。その逆は真実ではありません..それがあなたの説明として役立つことを願っています. 乾杯!!

于 2012-09-21T07:40:29.123 に答える