Hello,
J'ai un petit problème de crash dans le context d'une MKMapView.
Contexte: la mapview est dans un ViewController, lui même dans un NavigationController.
Dans -viewDidLoad j'ai le lignes de code suivantes:
Et en tant que handler pour l'observation j'ai ceci:
Pour finir j'ai aussi implémenté le code suivant dans -viewDidUnload
Donc a priori je n'ai rien qui manque. Cependant quand je charge la vue (dans le navigation controller) et je clique sur "Back" avant que la première géolocatisation ait eu lieu, j'ai un crash malencontreux:
Comme si l'observeur n'était jamais déréférencé malgré l'appel à "removeObserver:forKeyPath:" Un moyen de rendre ça un peu plus safe / foolproof? J'ignore totalement si j'ai oublié quelque chose ou si ça doit passer par du foolproofing.
Un bug que j'aurais pas vu?
Merci pour les idées,
Aurélien
J'ai un petit problème de crash dans le context d'une MKMapView.
Contexte: la mapview est dans un ViewController, lui même dans un NavigationController.
Dans -viewDidLoad j'ai le lignes de code suivantes:
Bloc de code:
(snip)
[_mapView addObserver:self forKeyPath:@"userLocation.location" options:NSKeyValueObservingOptionNew context:NULL];
_mapView.showsUserLocation = YES;
(snip)
Et en tant que handler pour l'observation j'ai ceci:
Bloc de code:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
{
(snip)
}
}
Pour finir j'ai aussi implémenté le code suivant dans -viewDidUnload
Bloc de code:
_mapView.showsUserLocation = NO;
[_mapView removeObserver:self forKeyPath:@"userLocation.location"];
Donc a priori je n'ai rien qui manque. Cependant quand je charge la vue (dans le navigation controller) et je clique sur "Back" avant que la première géolocatisation ait eu lieu, j'ai un crash malencontreux:
Bloc de code:
2010-03-29 17:18:46.974 CityQuest[31905:207] ViewDidLoad
2010-03-29 17:18:53.237 CityQuest[31905:207] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '<NSCFType: 0x50115e0>: An -observeValueForKeyPath:ofObject:change:context: message was received but not handled.
Key path: userLocation.location
Observed object: <MKMapView: 0x503f530; frame = (0 0; 320 372); clipsToBounds = YES; opaque = NO; autoresize = W+H; layer = <CALayer: 0x503f8d0>>
Change: {
kind = 1;
new = <+37.33168900, -122.03073100> +/- 100.00m (speed -1.00 mps / course -1.00) @ 2010-03-29 17:18:53 +0100;
}
Context: 0x0'
Comme si l'observeur n'était jamais déréférencé malgré l'appel à "removeObserver:forKeyPath:" Un moyen de rendre ça un peu plus safe / foolproof? J'ignore totalement si j'ai oublié quelque chose ou si ça doit passer par du foolproofing.
Un bug que j'aurais pas vu?
Merci pour les idées,
Aurélien