Während der Entwicklung von Apps in Xcode treten Speicherlecks auf. Wenn ich sie in der erweiterten Detailansicht überprüfte, zeigen sie verschiedene Methoden an, die nicht mit implementiert sind. Wie finde ich genau heraus, welches Objekt leckt und wo es Speicher verliert.
Wenn ARC aktiviert ist, müssen wir uns um Speicherlecks kümmern oder nicht?
Selbst bei ARC
Speicherlecks kann es vorkommen, dass nur die Freigabe und Autorelease während der Kompilierzeit eingefügt wird.
1. Sie müssen mit Build and analyze
in XCode, shift+command+b
auf Undichtigkeiten prüfen. Sie sollten diese Probleme beheben.
2. Danach können Sie die Instrumente mit der Profiloption command+i
verwenden. Dies zeigt Ihnen, wo das Leck sein könnte.
Dieser Link wird Ihnen auch helfen Ссылка
Bearbeiten: Einige Screenshots hinzugefügt, um es hoffentlich klarzustellen.
Wählen Sie während der Profilerstellung nach der Auswahl von leaks
die Option call tree
und aktivieren Sie die Kontrollkästchen hide system libraries
, invert call tree
und show obj-c only
wie in der Abbildung unten gezeigt.
Nach einem Doppelklick auf den Symbolnamen unten erhalten Sie die Zeile, in der sie undicht ist.
Sie werden so etwas bekommen.
Ja, selbst mit ARC gibt es Speicherlecks . ARC ist kein Garbage Collector, es fügt nur für Sie zur Kompilierungszeit, behält, Releases und Autoreleases in Schlüsselpositionen ein. Also, obwohl es dem Entwickler hilft, sollten Sie beachten, dass Speicherlecks immer noch existieren (zum Beispiel Zirkelreferenzierung). Sie können mit dem Static Analyzer beginnen und jedes Problem beheben, das Ihnen angezeigt wird. Sie können dann zu Instrumente gehen und Leaks auswählen.
Tags und Links iphone ios ios4 iphone-sdk-3.0