ios - AFNetworking 可达性 iOS

标签 ios objective-c afnetworking reachability

我对 AFNetorking 的 Reachability 有点迷茫,没有找到很多有用的信息。

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

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

这段代码有什么用?

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

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

-startMonitoring
-stopMonitoring

最佳答案

AFNetworking 的-startMonitoring 方法用于让您的AFNetworkReachabilityManager 开始监控网络连接。如果您不调用 -startMonitoring,您的 setReachabilityStatusChangeBlock永远不会被调用(无论您把它放在哪里),因为 AFNetworking 没有监控您的连接。

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

只要网络状态发生变化,就会调用 setReachabilityStatusChangeBlock。如果/当网络发生变化时,您可以将它放在任何您想进行更改的地方。这方面的一个例子是将它放在您的应用程序委托(delegate)中,并在网络状态发生变化时发送 NSNotification ,以便观察通知的任何 View Controller 都可以做出适当的 react 。

您还可以手动检查网络是否在线(只要 -startMonitoring 被调用并且 AFNetworking 正在监控您的网络)使用如下方式:

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

您可以在 AFNetworking 的 official documentation on GitHub 上阅读更多内容.

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

相关文章:

iphone - MKCircleview 图纸

ios - UIAlertViewController.actionSheet 上每个 Action 的 Swift 不同颜色

ios - 创建一个包含自定义类对象的数组

objective-c - iPhone/iPad 的核心文本示例

objective-c - 类似于 CLRegion 的方形区域

ios - Swift 2 - AFNetwork 请求缓存问题

iphone - 如何使用 AFNetworking 保存带有外部资源的 html 文件?

objective-c - If-Else 语句不起作用

ios - 将图像设置在背景中心,按钮周围有内部空间

ios - 使用iOS中的AFNetworking,确定故障响应是服务器错误还是连接错误的最佳方法是什么?