Проблемы с доступностью Apple класса - PullRequest
1 голос
/ 03 января 2011

У меня есть приложение, которое использует UITabBar, и оно должно загружать контент из Интернета, поэтому я решил использовать класс Reachability.Когда я запускаю его, метод работает очень хорошо, но если я не жду, когда вся работа будет выполнена, и перехожу к другому индексу tabBar, то я возвращаюсь к первому, приложение удерживается и не двигается.Вот некоторый код:

- (void)viewWillAppear:(BOOL)animated {
[[self.navigationController navigationBar] setHidden:YES];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil];
[internetReachable startNotifier];
[hostReachable startNotifier];
} 
- (void)checkNetworkStatus:(NSNotification *)notice {
BOOL flag;
UIAlertView *alert;
NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];

alert = [[UIAlertView alloc] initWithTitle:@"Attenzione!" message:@"Non ci sono connessioni disponibili a internet: impossibile scaricare i dati!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
switch ( internetStatus ) {
    case NotReachable:
        self.internetActive = NO;
        flag = NO;
        break;
    case ReachableViaWiFi:
        self.internetActive = YES;
        flag = YES;
        break;
    case ReachableViaWWAN:
        self.internetActive = YES;
        flag = YES;
        break;
}
if ( flag )
    [NSThread detachNewThreadSelector:@selector(loadDataFromInternet) toTarget:self withObject:nil];
else {
    [alert show];
    [self.spinner stopAnimating]; 
}

[alert release];
}

Я вставлю все, что вам может понадобиться.

1 Ответ

4 голосов
/ 06 января 2011

У меня была похожая проблема с приложением. Это также похоже на этот вопрос , на который я только что ответил - убедитесь, что вы проверяете асинхронно, а не в основном потоке (или, по крайней мере, не блокируете пользовательский интерфейс).

Кроме того, интересно, что я прочитал ресурс, в котором говорится, что когда вам нужен доступ в Интернет, просто сделайте это. Не используйте Reachability в первую очередь для «предполетной проверки». Используйте Reachability после того, как вы не смогли определить, почему вы потерпели неудачу :). Я вспоминаю эту мудрость от самого Apple - но я забываю, где я ее читал, и быстрый Google не находит ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...