2010-03-12 85 views
1

我有一個警告「MyAnnotation沒有實現MKAnnotation協議」每次我用這個:MyAnnotation沒有實現MKAnnotation協議


[mapView addAnnotation:annotation]; 

or 

[mapView removeAnnotation:mapView.annotations]; 

有人有一個想法?

回答

3

(假設你註釋對象是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 
+0

感謝我的第一個警告現在不在這裏,但第二次警告,它說:「NSArray沒有實現MKAnnotation協議」 – ludo

+0

- , - 我錯誤的忘記了 - 刪除註釋 – ludo