我正在使用AFNetworking 2.0来监控可达性。
在我的主要VC的viewDidLoad中,我有以下内容:
// Start monitoring the internet connection
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status));
// Check the reachability status and show an alert if the internet connection is not available
switch (status) {
case -1:
// AFNetworkReachabilityStatusUnknown = -1,
NSLog(@"The reachability status is Unknown");
[self reachabilityNotReachableAlert];
case 0:
// AFNetworkReachabilityStatusNotReachable = 0
NSLog(@"The reachability status is not reachable");
[self reachabilityNotReachableAlert];
case 1:
// AFNetworkReachabilityStatusReachableViaWWAN = 1
NSLog(@"The reachability status is reachable via WWAN");
case 2:
// AFNetworkReachabilityStatusReachableViaWiFi = 2
NSLog(@"The reachability status is reachable via WiFi");
break;
default:
break;
}
}];
在这个主VC的顶部,我加载了不同的视图控制器/路径/导航控制器,并在使用它们后解除。
问题
我想要做的是监控连接,但仅在显示主VC时。例如,如果我在主VC上加载导航控制器并且连接丢失,我仍然可以接听reachabilityNotReachableAlert
。
如何只监控主VC在屏幕上的显示时间,而不必一直运行stopMonitoring
和startMonitoring
?
我想我可以将stopMonitoring
置于prepareForSegue
方法中,然后将startMonitoring
放入viewDidAppear
,是否有更简单的方法可以做到这一点?
答案 0 :(得分:2)
不幸的是,没有更简单的方法来做到这一点。
然而,你提到的计划听起来并不那么糟糕。你基本上要求经理关闭和打开它的通知,它需要你告诉它什么时候这样做。
我是这样做的:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[manager startMonitoring];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[manager stopMonitoring];
}