类 -(MyAnnotation 注释)的实例 0x11d0ce4b0 已被释放,而键值观察者仍向其注册。观察信息被泄露,甚至可能被错误地附加到其他对象上。在 NSKVODeallocateBreak 上设置断点以在调试器中停止。这是当前的观察信息:
但是我在我的 dealloc 方法上设置了一个断点,并且在那里,我确实取消了这些通知的注册。调用了 Dealloc,我确实检查了它是否是同一个对象,并且所有取消注册的调用都在那里。所以我不知道它怎么不能移除观察者。
类 -(MyAnnotation 注释)的实例 0x11d0ce4b0 已被释放,而键值观察者仍向其注册。观察信息被泄露,甚至可能被错误地附加到其他对象上。在 NSKVODeallocateBreak 上设置断点以在调试器中停止。这是当前的观察信息:
但是我在我的 dealloc 方法上设置了一个断点,并且在那里,我确实取消了这些通知的注册。调用了 Dealloc,我确实检查了它是否是同一个对象,并且所有取消注册的调用都在那里。所以我不知道它怎么不能移除观察者。
创建自定义AnnotationView
:
#import <MapKit/MapKit.h>
@interface AnnotationView : MKPlacemark
@property (nonatomic, readwrite, assign) CLLocationCoordinate2D coordinate;
@property (nonatomic, strong) NSString *title;
@property (nonatomic, strong) NSString *subtitle;
@end
而在.m file
#import "AnnotationView.h"
@implementation AnnotationView
- (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate addressDictionary:(NSDictionary *)addressDictionary
{
if ((self = [super initWithCoordinate:coordinate addressDictionary:addressDictionary]))
{
self.coordinate = coordinate;
}
return self;
}
@end
// 使用注释添加#import "AnnotationView.h"
你的相关.m file
:
CLLocationCoordinate2D pCoordinate ;
pCoordinate.latitude = LatValue;
pCoordinate.longitude = LanValue;
// Create Obj Of AnnotationView class
AnnotationView *annotation = [[AnnotationView alloc] initWithCoordinate:pCoordinate addressDictionary:nil] ;
annotation.title = @"I m Here";
annotation.subtitle = @"This is Sub Tiitle";
[self.mapView addAnnotation:annotation];
以上是如何创建的简单示例AnnotationView
。