Hi,
I am trying to add a KVO for my MKPinAnnotationView class. In my
MapViewController which has an instance of a MKMapView, I have the following
code:
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
for (MKAnnotationView *anAnnotationView in views) {
[anAnnotationView addObserver:self
forKeyPath:@"selected"
options:NSKeyValueObservingOptionNew
context:MAP_ANNOTATION_SELECTED];
}
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change context:(void *)context{
NSString *action = (NSString*)context;
NSLog(@"Selected");
if([action isEqualToString:MAP_ANNOTATION_SELECTED]){
// do something
}
}
In my AnnotationView I try to remove the observer:
- (void)dealloc {
[self removeObserver:self forKeyPath:@"selected"];
[super dealloc];
}
My MapViewController is a UIViewController. When I add some MKAnnotationViews,
and the view is removed, I get the following error:
An instance 0x6b778b0 of class MKPinAnnotationView was deallocated while key
value observers were still registered with it. Observation info was leaked, and
may even become mistakenly attached to some other object. Set a breakpoint on
NSKVODeallocateBreak to stop here in the debugger. Here's the current
observation info:
<NSKeyValueObservationInfo 0x6e39030> (
<NSKeyValueObservance 0x6b641e0: Observer: 0x6e32220, Key path: selected,
Options: <New: YES, Old: NO, Prior: NO> Context: 0x1722c, Property: 0x6b77ff0>
I am a bit confused. I am not sure how to remove the observer...
Thanks for the help,
Phil
_______________________________________________
Cocoa-dev mailing list ([email protected])
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to [email protected]