Вопрос

У меня есть предупреждение "MyAnnotation не реализует протокол MKAnnotation" каждый раз, когда я использую это:


[mapView addAnnotation:annotation];

or

[mapView removeAnnotation:mapView.annotations];

У кого-нибудь есть идея?

Это было полезно?

Решение

(Предполагается, что ваш объект аннотации является экземпляром класса 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top