2010-09-15 4 views
0

J'ai une TabBarApplication avec quatre éléments de barre d'onglets.LocationManager vit toujours lors du changement d'onglet

Mon troisième onglet utilise un CLLocationManager pour localiser l'utilisateur et ainsi de suite.

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { 

[locationManager stopUpdatingLocation]; 
NSLog(@"error%@",error); 
switch([error code]) 
{ 
    case kCLErrorNetwork: 
    { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Please check your network connection or that you are not in airplane mode." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; 
     [alert show]; 
     [alert release]; 
    } 
     break; 
    case kCLErrorDenied:{ 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"You have denied to allow Berns to get your location. " delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; 
     [alert show]; 
     [alert release]; 
    } 
     break; 
    default: 
    { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Unknown network error." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; 
     [alert show]; 
     [alert release]; 
    } 
     break; 
} 

}

Mais quand je passe à la quatrième onglet, ce happends:

Je reçois un UIAlertView avec le message:

Unknown network error. 

ne pas le CLLocationManager mourir quand onglet de commutation? J'ai appelé [release] -method dans la méthode dealloc.

+0

Je ne sais pas pourquoi c'est arrivé. Mais ça n'est plus arrivé depuis que j'ai posté ce fil, donc ça devait être autre chose ... –

Répondre

0

Je pense que cela avait à voir avec le fait que je n'ai pas mis en œuvre l'accessibilité pour vérifier la connexion réseau.

Ceci est également une demande dans les lignes directrices App Store (ou comment vous l'appelez). Donc la réponse est: Vérifiez la connexion Internet avec Accessibilité et informez l'utilisateur si l'application l'exige.

0
**use this in dealloc method** 

-(void)dealloc 
{ 

    [locationManager stopUpdatingLocation]; 

locationManager.delegate=nil; 

[locationManager release]; 
} 

//...........cheers. 
Questions connexes