/ / Beste Vorgehensweise beim Debuggen von applicationDidReceiveMemoryWarning auf dem iPhone? - iPhone, Ziel-C, Kakao-Touch, Speicher-Lecks

Beste Methode zum Debuggen von applicationDidReceiveMemoryWarning auf dem iPhone? - iPhone, Ziel-C, Kakao-Touch, Speicher-Lecks

Brauchen Sie Rat, wie Sie dies debuggen können. Ich bin neu mit begrenzten Umgebungen und habe keine Erfahrung mit Embedded- oder Smartphone-Programmierung, daher könnte ich einige Hinweise verwenden. Schon gewusst von: Instrumente, Clanger Statische Analyse, manuelle Code-Überprüfung usw. Instrumente scheinen im Allgemeinen sehr hilfreich zu sein, aber ziemlich zeitaufwendig und frieren oft ein! Clanger hat mir auch sehr geholfen. Es scheint, als würde ich im Allgemeinen zu viel Speicher verbrauchen und ich frage mich, was eine gute Strategie ist. Veröffentliche ich einige Top-Level-Objekte? Gibt es eine "bevorzugte Strategie"?

Ich frage mich nur, ob jemand das erfolgreich angepackt hat und ob es weitere Vorschläge gibt. Danke allen.

Antworten:

5 für die Antwort № 1

Es gibt eine Menge guter Artikel für das Speichermanagement in einer iPhone App. Hier sind einige nützliche Links.

Dinge, auf die Sie im Allgemeinen achten sollten

  1. Geben Sie alle Variablen frei, die Sie nicht benötigen
  2. Immer handhaben didReceiveMemoryWarning und geben Sie alle Variablen frei, die nicht verwendet werden
  3. Beenden Sie speicherintensive Prozesse in applicationDidReceiveMemoryWarning wie Audio / Video spielen, UIImagePickerController etc

BEARBEITEN Dies gilt nicht mehr. imageNamed: hatte Caching-Probleme vor 3.x OS-Versionen. Das Problem existiert nicht mehr und Sie sollten imageNamed verwenden: (erleichtert die Implementierung der Retina-Anzeige)

  1. Verwende nicht imageNamed: um UIImage Objekte zu erstellen.

2 für die Antwort № 2

Im Grunde erhalten Sie diese Warnung, weil das iPhone (nicht überraschend) gefährlich wenig Speicher hat. Dies kann im Allgemeinen aus einem von zwei Gründen sein;

  1. Sie haben ein Speicherleck.
  2. Sie weisen viel zu viele Objekte zu und müssen Ihr Design erneut besuchen.

Für den ersten sollten Sie Instrumente undUntersuchen Sie Ihre Speicherzuordnungen. Dies kann Ihre App wirklich verlangsamen (und erfordert zusätzlichen Arbeitsspeicher). Testen Sie daher einzelne Bereiche Ihrer App nacheinander. Z.B. Wenn Sie mehrere Ansichten haben, wechseln Sie mehrmals zwischen ihnen.

Für die Sekunde müssen Sie Sachen überprüfenSie tun, dass große Speicherzuweisungen führen können. Wenn Sie zum Beispiel einen Flickr-Browser schreiben, müssen Sie möglicherweise die Anzahl der Bilder, die Sie geladen haben, jederzeit reduzieren oder einige ungenutzte Bilder freigeben, wenn Sie diese Warnung erhalten.

Dies sind die einzigen allgemeinen Regeln, die ich vorschlagen kann, ohne mehr über Ihre App zu erfahren.

Leider gibt es keinen wirklichen Weg (den ich kennevon) um Zahlen für die aktuelle Speicherzuweisung vom iPhone OS zu erhalten. Dies macht es wirklich schwierig, die Bereiche Ihrer Anwendung zu isolieren, die versehentlich speicherhungrig sind.