iPhone Programmierung: seltsamer Fehler mit MKMapView

8

Ich arbeite an einer iPhone-App, und ich habe manchmal ein seltsames Protokoll, wenn ich eine Karte manipuliere:

%Vor%

Wenn ich ab und zu herumspiele, würde die App abstürzen. Ich habe es gegoogelt, aber nichts interessantes gefunden ... So komisch!

    
d_o_p 14.07.2010, 14:16
quelle

5 Antworten

4

In den Apple Developer-Foren gibt es einen einzigen Thread, der etwas mehr Licht ins Dunkel bringt: " Abstürze im Zusammenhang mit dem Karten-Kit? > "

Die Person, die auf den Beitrag geantwortet hat, hat viel detailliertere diagnostische Informationen und zeigt, dass der Absturz in einem separaten Thread stattfindet, aber er erzeugt keine Threads, die zu dem Verhalten / Absturz führen könnten, den er bekommt.

>

Sie sollten einen Fehler bei Apple einreichen .

    
Aaron 13.08.2010 00:06
quelle
1

Ohne meine Kristallkugel kann ich nur raten, aber Sie haben wahrscheinlich release d etwas manuell, das schon für autorelease markiert wurde.

Lesen Sie das Programmierungshandbuch zur Speicherverwaltung , insbesondere das Speicherverwaltungsregeln ! Zweimal.

    
hop 14.07.2010 14:44
quelle
0

Es ist höchstwahrscheinlich eine Warnung, dass dasselbe Objekt das ImageIO_Free-Objekt eine weitere Version gesendet hat, als es eine explizite oder implizite Aufbewahrung gesendet hat. ImageIO_Free ist zu Ende und stirbt unerwartet und verursacht den Absturz.

    
TechZen 14.07.2010 14:32
quelle
0

Ich habe dieses Problem zufällig auch ...

ImageIO_Free: ptr 0xd700000 wurde doppelt freigegeben ??? (16384 Bytes) Hash: 0

Ich weiß nicht, wie ich das beheben soll. Scheint ein Problem mit dem Framework zu sein.

    
dwidman 28.07.2010 12:01
quelle
0

Das ist mir gerade passiert und ich glaube, ich habe die Antwort.

Das Problem scheint darin zu liegen, Anmerkungen zu einer Kartenansicht hinzuzufügen. Es scheint, dass das MKMapView-Objekt diese Objekte nicht bei dem Aufrufen von "AddAnnotations" auf einer MKMapView-Instanz behält. Nachdem Sie also mit der Karte herumgespielt und die Anmerkungen in die Ansicht und aus der Ansicht verschoben haben, wurde der Speicher freigegeben, wenn es Zeit für das erneute Rendern der Anmerkungen ist, und Sie erhalten einen EXC_BAD_ACCESS-Fehler.

Behalten Sie dazu die Objekte bei, die Sie als Anmerkungen hinzufügen möchten. Dies kann erreicht werden, indem eine NSMutableArray-Instanzvariable der aktuellen Annotationen der Karte verwendet wird. Jedes Mal, wenn Sie addAnnotations aufrufen, fügen Sie auch diese Objekte zu diesem beibehaltenen Array hinzu, und Sie sollten alle Einstellungen vornehmen.

In Ihrer .h-Datei:

%Vor%

In Ihrer .m-Datei:

%Vor%

Und wenn Sie Anmerkungen hinzufügen, tun Sie etwas wie folgt:

%Vor%

Bisher für mich gearbeitet. Wird aktualisiert, wenn sich die Dinge ändern. Wenn Sie Objekte aus der Kartenansicht entfernen, sollten Sie dieses Feeds-Array auch synchronisieren, um "toten Speicher" zu vermeiden.

    
Jared Egan 28.09.2010 19:13
quelle

Tags und Links