MyAnnotation не реализует протокол MKAnnotation
-
19-09-2019 - |
Вопрос
У меня есть предупреждение "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