我有一个TableView通过方法调用retrieveData从服务器接收数据。
我使用可达性来测试用户是否连接了互联网。
如果是,则调用retrieveData
如果不是,我得到一个NSLog打印。

一切正常,但是..
即使有连接,该表也需要花费几秒钟的时间来加载,这不是我想要的。
我怎么能马上?

我在viewDidLoad方法中检查连接。

- (void)viewDidLoad
{
    [super viewDidLoad];

    Reachability* reach = [Reachability reachabilityWithHostname:@"www.google.com"];

    reach.reachableBlock = ^(Reachability*reach)
    {
        // Load the Table Content
        [self retrieveData];
    };

    reach.unreachableBlock = ^(Reachability*reach)
    {
        NSLog(@"no internet");
    };

    [reach startNotifier];

}

最佳答案

即使Google网站“最有可能”不会失败,但从理论上讲,依靠主机名的可达性来确定连接性是一个坏主意。

一旦有了downloaded并导入了Reachbility.mReachbility.h文件

创建一个辅助函数:

-(BOOL)IsConnected{
  Reachability *reachability = [Reachability reachabilityForInternetConnection];
  NetworkStatus networkStatus = [reachability currentReachabilityStatus];

  return !(networkStatus == NotReachable);
}

然后用
if([self IsConnected]){
 [self retrieveData];
}
else{
  //not connected to internet!
}

关于ios - 可达性iOS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23064457/

10-12 01:22