MyAnnotation不实现MKAnnotation协议

时间:2010-03-12 07:09:25

标签: iphone mkmapview mkannotation

我每次使用时都会发出警告“MyAnnotation没有实现MKAnnotation协议”:


[mapView addAnnotation:annotation];

or

[mapView removeAnnotation:mapView.annotations];

有人有想法吗?

1 个答案:

答案 0 :(得分:4)

(假设您的注释对象是MyAnnotation类的实例)

MKMapView要求其注释对象符合MKAnnotation协议,以确保它们实现某些必需的方法 - 否则您的应用程序可能会在运行时产生错误。该协议定义如下:

// MKAnnotation.h
@protocol MKAnnotation <NSObject>

// Center latitude and longitude of the annotion view.
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;

@optional

// Title and subtitle for use by selection UI.
- (NSString *)title;
- (NSString *)subtitle;

@end

那就是你的MyAnnotation类必须定义和实现coordinate属性,并且还可以实现2个可选的title方法。为了让编译器知道您的类实际符合协议,您必须按以下方式声明您的类:

@interface MyAnnotation: NSObject <MKAnnotation> // Or whatever parent class you have