Xcode是正確的告訴你,你需要實施-coordinate。這是MKAnnotation協議的非可選方法。
http://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKAnnotation_Protocol/Reference/Reference.html
座標 註釋的中心點(指定 作爲地圖座標)。 (必填)(只讀)
@屬性(非原子,只讀) CLLocationCoordinate2D協調
我相信你無法合成協調的原因是不是因爲你沒有申報財產,但因爲你沒有告訴編譯器使用什麼存儲。
添加
CLLocationCoordinate2D coordinate;
到您的類接口的字段(變量)節將編譯器它正在尋找存儲。
或者你可以指定使用此語法編譯器在其他存儲:
@synthesize coordinate=myCoordinateVariable;
但這些都不是真正的問題,因爲你沒有使用合成。
只需自己實施該方法!所需的部分只讀,所以你只需要實現getter。
-(CLLocationCoordinate2D)coordinate {
return myCoordinate;
}
@property和@synthesize主要是捷徑。@synthesize對編譯器說 - 「如果我沒有,實現這些訪問器」。但通常你會聲明這樣的屬性,對吧?
@implementation MyClass : NSObject {
NSString *someString;
}
@property (nonatomic, retain) NSString *someString;
然後你合成它。 @synthesize由@property暗示的聲明創建相應的實現:
-(NSString *)someString;
-(void)setSomeString:(NSString *);
和使用,當你聲明的實例變量,的NSString * someString您提供的存儲空間。
順便提一下,在Xcode 4中,如果尚未存在,@synthesize會爲您自動創建存儲。
我也有問題,認爲它是一個xcode的東西。 – 2011-05-13 19:22:31
我假設你已經清理並重建,因爲它出現了?您的任何課程都聲稱符合MKAnnotation? Xcode 3或4?同時檢查你是否在正確的位置獲得了所有@end指令。 Xcode可能因錯過或錯位的@ end而變得非常困惑。 – kball 2011-05-13 23:00:16
它通常會在您聲明屬性並且不合成它時發生。 – 2011-05-14 02:47:55