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 就会被隐藏。但同时注册通知,如果我们再次恢复互联网。我用两种不同的方法来处理不同的东西。

所以我的问题:

  1. 如果这些块中的一个被执行,那么 "done" 还是如果这个事件发生它会再次执行?还是仅针对一次连接更改设置?

  2. 如果我通过两种不同的方法注册这个通知,它们会同时执行吗?

Shared Manager 指的是一个单例实例,除非 setReachabilityStatusChangeBlock 将代码块推送到某个数组中,并且在调用时遍历数组并调用每个存储块(事实并非如此)。块将存储在一个变量中,就像所有变量一样,它将保存最后一次更新。 所以你可以安全地期待你传递的最新块被调用。