拖动MKPinAnnotationView会引发错误

时间:2011-09-20 03:40:08

标签: iphone

我有一个符合MKAnnotation类的AddressAnnotation类。我使用MKReverseGeocoderDelegate方法从用户的位置获取地址。在那个代表中,我放下了针脚。我将引脚设置为可拖动,当调用以下方法时,我再次启动反向地理编码器。

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view didChangeDragState:(MKAnnotationViewDragState)newState fromOldState:(MKAnnotationViewDragState)oldState {
    if (newState == MKAnnotationViewDragStateEnding) {
        CLLocationCoordinate2D newCoordinate = view.annotation.coordinate;
        MKReverseGeocoder *reverseGeocoder = [[MKReverseGeocoder alloc] initWithCoordinate:newCoordinate];
        reverseGeocoder.delegate = self;
        [reverseGeocoder start];
    }
}

适用于大约3针拖动,直到我收到以下错误。我不确定它意味着什么或者发生了什么。任何帮助,将不胜感激。谢谢!

“类AddressAnnotation的实例0x1b7ac0被解除分配,而键值观察者仍然注册了它。观察信息被泄露,甚至可能被错误地附加到其他对象。在NSKVODeallocateBreak上设置一个断点,在调试器中停止。这是当前的观察信息:“

1 个答案:

答案 0 :(得分:0)

听起来你创建了一个名为AddressAnnotation的MKAnnotation子类。一个类使用键值观察来观察此类属性的成员,并且在不删除观察者的情况下释放了AddressAnnotation实例。我想你可以通过运行

来解决这个问题
- (void)removeObserver:(NSObject *)anObserver forKeyPath:(NSString *)keyPath
在发布AddressAnnotation之前