Мое приложение для iphone довольно простое с одним представлением, которое обрабатывает все, в viewDidLoad я проверяю, есть ли у нас подключение к Интернету, и если мы делаем, мы загружаем из Интернета, а если нет, мы загружаем из локального ресурса. И это прекрасно работает.
//in viewDidOnload
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleNetworkChange:)
name:kReachabilityChangedNotification object:nil];
reachability = [Reachability reachabilityForInternetConnection];
[reachability startNotifier];
NetworkStatus status = [reachability currentReachabilityStatus];
if (status == NotReachable) {
//Do something offline
} else {
//Do sometihng on line
}
- (void)handleNetworkChange:(NSNotification *)notice{
NetworkStatus status = [reachability currentReachabilityStatus];
if (status == NotReachable) {
//Change to offline Message
} else {
//Relaunch online application
}
}
Чтобы проверить событие handleNetworkChange, я отключил все сотовые данные, но оставил Wi-Fi включенным. В пределах диапазона Wi-Fi я запустил приложение, и все работает отлично. Затем я выхожу за пределы диапазона Wi-Fi, но мой handleNetworkChange никогда не срабатывает (протестировано с использованием uiAlertView). Находясь вне зоны действия Wi-Fi, мое приложение прекрасно запускает автономное сообщение.
Я подозреваю, что это проблема жизненного цикла ViewController. Должен ли этот код быть помещен в функцию AppDelegate? Возможно, это лучший дизайн для начала.