У меня есть собственный класс, соответствующий протоколу 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:
.
Что мне не хватает?