我有一个符合 MKAnnotation 协议的自定义类。这个类的一个实例由一个 viewController 持有,还有一个 MKMapView 类型的对象,称为_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:
方法,这似乎很奇怪。
我错过了什么?