iOS 5 MapKit stürzt beim Zoomen / Schwenken mit Überlagerungen ab

9

Ich habe eine App erstellt, die einige Overlays anzeigen soll. Die Überlagerungen sind in Form von Polygonen mit bis zu 10000 Punkten im äußeren Ring. Aber die hohe Punktzahl scheint hier nicht das Problem zu sein. In den letzten paar Tagen habe ich meine App immer vereinfacht, um mich selbst mit einer einfachen Ansicht zu finden, die ein MapView enthält. Die Ansicht wird von einer XIB geladen (mit angeschlossenen Anschlüssen und Delegaten). Das Overlay wird in der Methode erstellt - (void) mapView: (MKMapView *) mapView regionDidChangeAnimated: (BOOL) animiert und der mapView hinzugefügt.

Die Demonstration (die hier verfügbar ist Ссылка ) zeigt eine MapView und fügt ein rotes Dreieck hinzu, wenn die Karte gezoomt wird / out oder panned. Beim Herumzoomen und Panning (intensiv und schnell) des MapView stürzt die App ab. Es ist einfach, den Simulator zu markieren, auf dem Gerät ist es viel schwieriger, obwohl es möglich ist (ich kann ein Crash-Log zur Verfügung stellen).

Es gibt zwei Demos: MapCrash und MapCrashStatic. Die erste erstellt mehrere Polygone auf der Karte, abhängig davon, wo man schwenkt / zoomt. Die zweite hat nur ein einzelnes, statisches Polygon, das in - (void) viewDidLoad erstellt wird und dann bei jedem Aufruf von mapView regionDidChangeAnimated

hinzugefügt wird

App stürzt immer mit folgendem Backtrace ab:

%Vor%

Die Backtrace ist immer dieselbe, sie stürzt am selben Punkt im Bibliothekscode ab. Ich analysierte mit Instrumenten (Zombies, Lecks, Zuteilungen) und machte auch einen Test mit überstauten Objekten. Ich nahm an, dass es sich um ein Gedächtnisproblem handelt, aber ich konnte Malloc Guard noch nicht starten. Der Absturz kann auf mehreren Maschinen reproduziert werden - selbst wenn ich Xcode-Tools einfach neu installiert habe.

Andere Posts auf stackoverflow.com behandeln auch einen plötzlichen Absturz in MapKit, bieten aber keine direkte Lösung für mein Problem oder mussten sich mit delegierten und anderen View-Transition- oder Anwendungs-Start / Stop-Problemen befassen. ARC ist in meinen Projekten deaktiviert.

Ich jage diesen Absturz seit mehr als einer Woche, immer noch unter der Annahme, dass ich die KMLViewer-Demo (Apple) falsch interpretiert oder etwas falsch gemacht habe (Dank an andere iOS-Entwickler in meiner Nachbarschaft!)

Dennoch würde ich Ihre Vorschläge und Hilfe in dieser Angelegenheit schätzen.

    
Snel 05.11.2011, 19:15
quelle

2 Antworten

3

Sie haben wahrscheinlich schon darüber nachgedacht, aber ich habe zahlreiche deutlich aussehende Crasher von MapKit gesehen, die alle darauf zurückgehen, den Delegierten nicht zu vernachlässigen. Stellen Sie nur sicher, dass Sie den Delegaten der Kartenansicht auf null setzen, bevor Sie ihn freigeben.

Außerdem habe ich eine Reihe von Entwicklern gesehen, die geneigt sind, performSelector: afterDelay: in ihrer Kartenansicht zu verwenden. Das ist in Ordnung, solange Sie einen Canceloperform-Anruf an den richtigen Stellen auch setzen.

    
David Hodge 27.11.2011 09:26
quelle
0

Entfernen Sie die Methode zoomToPolyLine und verwenden Sie mapViewDidUpdateLocation, um die Polylinie zu vergrößern.

    
Muhammad Anum 04.02.2016 10:07
quelle