При использовании селектора reachabilityWithHostName: вы получаете уведомление вскоре после инициализации Reachability b / c, достижимость имени хоста неизвестна до тех пор, пока это имя не будет разрешено.Для reachabilityWithAddress: состояние достижимости уже известно, поэтому нет никаких изменений в отчете.
Я решил проблему, добавив следующие три строки к самому внутреннему блоку «если» в reachabilityWithAddress: function.
SCNetworkReachabilityFlags flags;
SCNetworkReachabilityGetFlags(reachability, &flags);
ReachabilityCallback(reachability, flags, retVal);
Вызывает ту же функцию обратного вызова, которая была бы вызвана, если достижимость действительно изменилась.Поэтому, если вы полностью зависите от уведомления, как и я, это приведет к публикации уведомления после инициализации достижимости.