我通过两种不同的方法进行设置:
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
if(status == AFNetworkReachabilityStatusNotReachable ||
status == AFNetworkReachabilityStatusUnknown){
self.liveTimesBar.hidden = YES;
//In case we regain connection
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
if(status == AFNetworkReachabilityStatusReachableViaWWAN ||
status == AFNetworkReachabilityStatusReachableViaWiFi){
[self extractedRelevantFlightNumbers];
}
}];
}
}];
所以我的想法是,当我们失去互联网时,此liveTimesBar被隐藏了。但是,如果我们再次恢复互联网连接,请同时注册通知。我是通过两种不同的方法处理不同的东西的。
所以我的问题:
如果执行了这些块之一,那么它是“完成”了吗?如果发生此事件,它将再次执行吗?还是只是为一次连接更改设置?
如果我通过两种不同的方法注册此通知,它们是否都将执行?
答案 0 :(得分:1)
Shared Manager引用一个单例实例,除非setReachabilityStatusChangeBlock
将代码块推送到某个数组中,并且在调用时在数组上迭代并调用每个存储的块(情况并非如此)。块将存储在一个变量中,并且像所有变量一样,它将保存最近的更新。
因此,您可以放心地期待已通过的最新区块被调用。