Nano Hash - криптовалюты, майнинг, программирование

MKAnnotation и setCoordinate:

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

Что мне не хватает?


Ответы:


1

Когда ты говоришь

@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;

«только для чтения» говорит компилятору создавать только метод получения для вашего свойства, а не метод установки.

Поскольку CLLocationCoordinate2D является структурой C, а не объектом, вы можете использовать:

@property (nonatomic, assign) CLLocationCoordinate2D coordinate;

если вы хотите, чтобы компилятор автоматически создавал и геттер, и сеттер.

19.08.2012
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..