Ich entwickle eine App, die eine UIScrollView verwendet, um eine Liste von Bildern basierend auf Suchkriterien anzuzeigen. Mit einem Knopf kann der Benutzer mehr Bilder laden.iPhone Speicherverwaltung, um meine App für mehrere Geräte crashsicher zu machen
Wenn auf einem iPhone 4 Testen der Viewcontroller erhält eine Speicher-Warnung bei ~ 750 Bildern. Beim Testen auf einem iPod 2. Generation wird eine Speicherwarnung bei ~ 150 Bildern empfangen.
Mein Verständnis ist, dass, wenn didReceiveMemoryWarning genannt wird, ein Speicher frei durch Objekte, sondern Erholung von Low-Memory-Freigabe ist nicht garantiert.
Ich habe didReceiveMemoryWarning und Release grundsätzlich alle Objekte implementiert. In den Instrumenten sehe ich eine Speicherauslastung von ~ 3MB. Wenn der iPod das erste Mal seine Speichergrenze erreicht, läuft alles gut, der Speicher wird freigegeben und die App nimmt den normalen Betrieb wieder auf. Beim zweiten Aufruf von didReceiveMemoryWarning kann ich zwar die freigegebenen Objekte sehen, aber die App stürzt trotzdem ab.
Also, wie kann ich meine App crash-sicher machen? Ich möchte sicherstellen, dass alle Geräte, auf denen die App ausgeführt wird, so viele Bilder laden können, wie es der Arbeitsspeicher erlaubt, aber ich möchte auch sicherstellen, dass die App nicht abstürzt.
Ich würde es bevorzugen, dass die App nie didReceiveMemoryWarning erreicht und ein Limit für die Anzahl der Bilder setzt, die angezeigt werden können, aber wie kann ich bestimmen, wie viele Bilder jedes mögliche Gerät laden können sollte?
Darüber hinaus ist die Größe der Bilder nicht garantiert. Beim Testen komme ich auf eine beliebige Zahl von 150 auf einem iPod, aber was ist, wenn die Bilder auf dem Server zu einem bestimmten Zeitpunkt doppelt so groß sind? Dann würde die App wahrscheinlich bei 75 Bildern abstürzen.
Irgendwelche Vorschläge?