/ / Crash na NSRangeException nemôže odstrániť pozorovateľa pre "heading" - ios, objective-c, mkmapview, mapkit

Zlyhanie na NSRangeException nemôže odstrániť pozorovateľa pre "heading" - ios, objective-c, mkmapview, mapkit

Fabric / Crashlytics zaznamenáva nasledujúci zlyhanie (dosť málo pádov) a nemôžem zistiť, čo to spôsobuje:

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

tu zadajte popis obrázku

Predpokladám, že to pochádza z môjho MKMapView kde dovoľujem používateľovi nastaviť typ mapy na MKUserTrackingModeFollowWithHeading, ale nikde nepridávam pozorovateľa.

Mohla by to byť len chyba MapKit? Zatiaľ bolo za posledných 30 dní 32 zlyhaní, čo sa zdá byť veľa.

odpovede:

0 pre odpoveď č. 1

Mal som podobnú haváriu s MapKit začínajúc v OS 4.x. Pod pojmom "podobné" myslím, že to súviselo s KVO a pozorovateľmi, ale nepamätám si detaily.

Problém bol: Mal som triedu implementujúcu protokol MKAnnotation. Ale v tejto triede som pristupoval ku vlastnosti súradníc bez použitia KVO (priamo cez zodpovedajúci ivar): _coordinate = .... namiesto self.coordinate = ...

Zdá sa, že Mapkit teraz (začínajúci v OS 4) spolieha na oznámenie KVO na monitorovanie pozície anotácií.