MKAnnotation プロトコルに準拠するカスタム クラスがあります。このクラスのインスタンスは、タイプ MKMapView のオブジェクトとともに、viewController によって保持されます_mapView
。viewController を _mapView のデリゲートに設定しました。私が宣言したカスタムクラスインターフェイスで:
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
MKAnnotation プロトコルごとに必要なためです。同じクラスの実装でも@synthesize
それを行います。ただし、viewController から次のメッセージを送信すると:
[_mapView addAnnotation:myCustomClass];
エラーが発生します:
<NSInvalidArgumentException> -[myCustomClass setCoordinate:]: unrecognized selector sent to instance 0x1479e0
カスタムクラスの実装ファイルに入って定義すると
- (void) setCoordinate:(CLLocationCoordinate2D)newCoordinate
{
coordinate = newCoordinate;
}
その後、注釈がマップに正常に追加されます。
メソッド@synthesize coordinate;
の世話をするべきではありませんか?座標とメソッドのsetCoordinate:
両方を書かなければならないのは奇妙に思えます。@synthesize
(void) setCoordinate:
私は何が欠けていますか?