2014-11-09 77 views
2

我在AFNetorking的可达性上有点迷茫,并没有找到很多好的信息。AFNetworking可达性iOS

我有一个应用程序登录到Web API。每个VC以某种方式连接到API,因此每个VC都需要具有网络访问权限。我使用AFHTTPSessionManager的子类来发出网络请求。

我对将代码放在哪里感到困惑 - 它只是appDelegate还是它在每个VC?

这段代码有什么用?

[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { 
    NSLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status)); 
}]; 

你在哪里使用这些方法,它们与上面的代码有什么关系?

-startMonitoring 
-stopMonitoring 

回答

12

AFNetworking的-startMonitoring方法来使你的AFNetworkReachabilityManager开始监控网络连接。如果你不打电话-startMonitoring,你的setReachabilityStatusChangeBlock永远不会被调用(不管你放在哪里),因为AFNetworking不监控你的连接。

正如您大概假设的那样,-stopMonitoring-startMonitoring完全相反 - 它会阻止管理器检查网络连接。我通常不会在我的应用程序中使用此方法,但如果您的应用程序不需要某个部分的网络连接,请随时拨打它(只需确保您在需要时再次监视网络) 。

只要网络状态发生变化,就会调用setReachabilityStatusChangeBlock。当网络发生变化时,您可以将其放在任何地方进行更改。例如,当网络状态发生变化时,将其放入应用程序委托并发出NSNotification,以便任何观察控制器观察通知都能够做出适当的反应。

您也可以手动检查,看看是否网络在线(只要-startMonitoring被称为和AFNetworking被监控网络)使用这样的事情:

if ([[AFNetworkReachabilityManager sharedManager] isReachable]) { 
    NSLog(@"Online"); 
} 

你可以阅读更多的AFNetworking的official documentation on GitHub