Domanda

Ho un app che utilizza UITabBar e deve scaricare contenuti da Internet, così ho deciso di utilizzare la classe di raggiungibilità. Quando lo lancio, il metodo funziona molto, ma se non mi aspetto che tutto il lavoro è fatto e vado a un altro indice TabBar, poi torno al primo, l'App trattiene e non si muove. Ecco po 'di codice:

- (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];
}

io incollare tutto il resto potrebbe essere necessario.

È stato utile?

Soluzione

Ho avuto un problema simile con un app. Questo è anche simile a questa domanda , che ho appena risposto -. assicurarsi che si sta controllando in modo asincrono, non sul thread principale (o almeno non bloccare l'interfaccia utente)

Inoltre, è interessante notare che ho letto una risorsa che suggerisce che, quando è necessario l'accesso a Internet, basta andare per esso. Non utilizzare raggiungibilità prima per "preflight". Usa raggiungibilità Dopo aver fallito per determinare perché hai fallito :). Ricordo quel pezzo di saggezza essere da Apple stessa - ma non ricordo dove l'ho letto e un rapido Google non sta trovando

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top