2016-06-22 11 views
4

Stoff/Crashlytics protokolliert den folgenden Absturz (durchaus ein paar Abstürze bisher), und ich kann nicht herausfinden, was es verursacht:Absturz auf NSRangeException kann nicht Beobachter entfernen für „heading“

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

enter image description here

Ich nehme an, dass dies von meinem MKMapView kommt, wo ich dem Benutzer erlauben, den Kartentyp auf MKUserTrackingModeFollowWithHeading festzulegen, aber nirgends bin ich einen Beobachter hinzufügen.

Könnte das nur ein MapKit-Fehler sein? Bis jetzt gab es 32 Abstürze in den letzten 30 Tagen, was sehr viel zu sein scheint.

+0

Haben Sie in Ihrem Code nach dieser Zeichenfolge gesucht? (Vielleicht ein fehlplatzierter Testcode?) Können Sie auch lokal reproduzieren? Welche KVO hast du eingerichtet? –

+0

@AvnerBarr - Keine Zeichenfolge in meinem Code dafür. Ich kann es nicht lokal reproduzieren. Ich verwende KVO nicht überall, deshalb ist es seltsam. –

+0

Sind die Abstürze auf einer bestimmten iOS-Version? Sind sie auch auf einer einzigen App-Version passiert? –

Antwort

0

Ich hatte einen ähnlichen Absturz mit MapKit in OS 4.x gestartet. Mit "ähnlich" meine ich, dass es mit KVO und Beobachtern zusammenhing, aber ich erinnere mich nicht an die Details.

Das Problem war: Ich hatte eine Klasse, die das MKAnnotation Protokoll einführte. Aber in dieser Klasse I wurde die Koordinaten Eigenschaft Zugriff ohne KVO mit (direkt über den entsprechenden Ivar): _coordinate = .... statt self.coordinate = ...

Es scheint, dass MapKit jetzt ist (beginnend in OS 4) basierend auf KVO-Benachrichtigung, um die Position der Anmerkungen zu überwachen.

+0

Sie sagen also, ich muss immer auf koordinieren als 'self.coordiante'? –

+0

ja sicher, es funktioniert gut – saraman