/ / Crash на NSRangeException не може видалити спостерігача для "заголовка"

Crash на NSRangeException не може видалити спостерігача за "заголовком" - ios, object-c, mkmapview, mapkit

Тканина / Crashlytics реєструє наступну аварію (досить багато аварій), і я не можу зрозуміти, що це викликає

Cannot remove an observer<VKMapAnnotationTrackingCameraController 0x155058110> for the key path "heading" from <MKUserLocation 0x153b60790> because it is not registered as an observer.

введіть опис зображення тут

Я припускаю, що це відбувається від мого MKMapView де я дозволяю користувачеві встановлювати тип карти MKUserTrackingModeFollowWithHeading, але я ніде не додаю спостерігача.

Чи може це бути просто помилкою MapKit? Поки що було 32 краху за останні 30 днів, що здається дуже багато.

Відповіді:

0 для відповіді № 1

У мене була подібна аварія з MapKit, починаючи з OS 4.x. Під "схожим" я маю на увазі, що це було пов'язано з КВО і спостерігачами, але я не пам'ятаю деталей.

Проблема була: У мене був клас, який впроваджував протокол MKAnnotation. Але в цьому класі я звертався до властивості координат без використання KVO (безпосередньо через відповідний ivar): _координат = .... замість self.coordinate = ...

Схоже, що Mapkit тепер (починаючи з ОС 4) спирається на повідомлення KVO для відстеження позиції анотацій.