如何通过AFNetworking为特定域设置可达性测试?

时间:2014-08-20 01:58:31

标签: ios objective-c afnetworking-2

AFNetworkReachabilityManager *mgr=[AFNetworkReachabilityManager sharedManager];
[mgr startMonitoring];

[mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
//NSLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status));
    if ([AFNetworkReachabilityManager sharedManager].reachable) {
        NSLog(@" ONLINE");
    }
    else
    {
        NSLog(@"OFFLINE");
    }

}];

这就是我现在通过AFNetworking测试可达性的方法!如何检查特定域中的可达性? AFNetworking如何使用它来测试可达性?

[AFNetworkReachabilityManager managerForDomain:@" www.google.com"];没有工作

2 个答案:

答案 0 :(得分:4)

一些事情。

首先,您确实应该在开始监控之前配置经理。在这种情况下,这意味着您应在致电setReachabilityStatusChangeBlock之前致电startMonitoring

其次,当您使用AFNetworkReachabilityManager创建新managerForDomain:时,您负责管理对象的生命周期。如果您在启用ARC的情况下使用上面的代码,mgr一旦超出范围就会被释放,这意味着没有经理可以监控可达性。一种解决方案是使mgr成为类的实例变量,例如申请代表。

答案 1 :(得分:1)

/ **  创建并返回指定域的网络可访问性管理器。

@param domain用于评估网络可达性的域。

@return初始化网络可访问性管理器,主动监视指定的域。  * / +(instancetype)managerForDomain:(NSString *)domain;

这是来自afnetworking的源代码, 要监视指定的域,只需使用此类方法为该域创建可访问性管理器。像这样

AFNetworkReachabilityManager *mgr= [AFNetworkReachabilityManager managerForDomain:@"www.google.com"];