MyAnnotation не реализует протокол MKAnnotation - PullRequest
1 голос
/ 12 марта 2010

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


[mapView addAnnotation:annotation];

or

[mapView removeAnnotation:mapView.annotations];

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

1 Ответ

4 голосов
/ 12 марта 2010

(Предполагается, что объект аннотации является экземпляром класса 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
...