AFNetworkReachabilityManager: Что произойдет, если я установлю setReachabilityChangeBlock дважды или более раз? - PullRequest
0 голосов
/ 23 апреля 2019

Я установил это двумя разными способами:

[[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. Если один из этих блоков будет выполнен, то будет ли он «выполнен» или он будет выполнен снова, если это событие произойдет? Или это просто для одного изменения подключения?

  2. Если я зарегистрируюсь для этого уведомления двумя разными способами, будут ли они оба выполнены?

1 Ответ

1 голос
/ 23 апреля 2019

Shared Manager относится к одноэлементному экземпляру, и если setReachabilityStatusChangeBlock не вытолкнет блок кода в некоторый массив и при вызове выполняет итерацию по массиву и вызывает каждый сохраненный блок (что не так).Блоки будут храниться в одной переменной и, как и все переменные, сохранят последнее обновление.Таким образом, вы можете смело ожидать, что ваш последний блок, который вы передали, будет назван.

...