AFNetworkReachabilityManager:如果我设置 setReachabilityChangeBlock 两次或更多次会怎样?
AFNetworkReachabilityManager: What happens if I set the setReachabilityChangeBlock twice or more times?
我通过两种不同的方法进行设置:
[[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 就会被隐藏。但同时注册通知,如果我们再次恢复互联网。我用两种不同的方法来处理不同的东西。
所以我的问题:
如果这些块中的一个被执行,那么 "done" 还是如果这个事件发生它会再次执行?还是仅针对一次连接更改设置?
如果我通过两种不同的方法注册这个通知,它们会同时执行吗?
Shared Manager 指的是一个单例实例,除非 setReachabilityStatusChangeBlock
将代码块推送到某个数组中,并且在调用时遍历数组并调用每个存储块(事实并非如此)。块将存储在一个变量中,就像所有变量一样,它将保存最后一次更新。
所以你可以安全地期待你传递的最新块被调用。
我通过两种不同的方法进行设置:
[[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 就会被隐藏。但同时注册通知,如果我们再次恢复互联网。我用两种不同的方法来处理不同的东西。
所以我的问题:
如果这些块中的一个被执行,那么 "done" 还是如果这个事件发生它会再次执行?还是仅针对一次连接更改设置?
如果我通过两种不同的方法注册这个通知,它们会同时执行吗?
Shared Manager 指的是一个单例实例,除非 setReachabilityStatusChangeBlock
将代码块推送到某个数组中,并且在调用时遍历数组并调用每个存储块(事实并非如此)。块将存储在一个变量中,就像所有变量一样,它将保存最后一次更新。
所以你可以安全地期待你传递的最新块被调用。