2013-05-31 34 views
0

如果我試圖檢查主機的可達性,這需要花費太多時間進行檢查,並且意味着我真的希望來自可達性的反饋更進一步我可以做什麼這個。我想取消可達性檢查,如果它需要更多的4秒,我想繼續我的應用程序在離線模式下工作。我不想讓我的用戶等待一段時間,直到我收到Reachabiltiy的反饋。是否有任何解決方法,如果可達性需要太多時間,我可以以任何方式跳過它?無法從非常低網絡上的Reachabilty獲得響應

- (BOOL)isReachableWithHostName:(NSString *)hostname { 
    BOOL reachable; 
    Reachability *reachability = [Reachability reachabilityWithHostName:hostname]; 
    NetworkStatus internetStatus = [reachability currentReachabilityStatus]; 
    if (internetStatus == NotReachable) { 
     reachable = NO; 
    } else { 
     reachable = YES; 
    } 

    return reachable; 
} 

- (BOOL)isGoogleReachable { 
    return [self isReachableWithHostName:@"google.com"]; 
} 

如果我想從可達性獲得反饋,如果它的響應時間少於4秒,我該怎麼做。

回答

1
  1. 使用異步方法。可達性在可達性發生變化時生成通知。
  2. 添加超時NSTimer並繼續假設在所需的超時後無法訪問。