2017-04-07 2 views
0

Ich mache eine App, die mit vielen hochaufgelösten Bildern vorrätig ist, die anfänglich in verschiedenen Auflistungsansichten angezeigt werden, basierend auf welcher Registerkarte ausgewählt ist, ähnlich wie Instagram. Obwohl alle Bilder mit App kommen, habe ich festgestellt, dass die UIImagages asynchron in einem einfachen NSMutableDictionary zwischengespeichert werden, um sie jedes Mal neu zu laden, beschleunigt die Sammlung Ansichten UI eine Tonne. Im Moment habe ich einen Bild-Cache, der alle Bilder in der App behandelt, obwohl sie über mehrere View-Controller/Collection-Ansichten verteilt sind und verschiedene Größen haben. Wenn einer dieser View-Controller eine Speicherwarnung erhält, wird der Cache gelöscht.Single vs Multiple UIImage Caches

Meine Frage ist: Ist dies ein ideales Setup, oder wäre es sinnvoller, für jeden View-Controller, der nur die Bilder in seiner jeweiligen Collection-View behandelt, einen separaten Image-Cache zu haben? Mein Denken ist auf diese Weise, wenn View Controller # 3 eine Speicherwarnung erhält, nur der Image-Cache wird gelöscht, so dass die View-Controller # 1 und # 2 ihre reibungslose Benutzeroberfläche beibehalten können.

Antwort

0

Es ist etwas besser, wenn man etwas cachen möchten, das richtige Objekt NSCache ist, es als ein Wörterbuch funktioniert, aber es viele Vorteile hat:

Die nscache Klasse umfasst verschiedene Auto-Räumungsstrategien , die sicherstellen, dass ein Cache nicht zu viel des Speichers des Systems verwendet. Wenn Speicher von anderen Anwendungen benötigt wird, entfernen diese Richtlinien einige Elemente aus dem Cache, wodurch der Speicherbedarf minimiert wird.
Sie können hinzufügen, entfernen und Abfragen im Cache aus verschiedenen Threads ohne müssen den Cache selbst sperren.
Im Gegensatz zu einem NSMutable Dictionary Objekt kopiert ein Cache die Schlüsselobjekte nicht, die darin eingefügt werden.

Über Sie Frage Ich denke, dass es keine spezifische Antwort gibt. Wenn Sie den Cache korrekt verwalten, können Sie nur einen verwenden, aber ich würde einen für jede von mir verwendete Auflistungsansicht erstellen, um die gemeinsame Nutzung von Informationen zu vermeiden.

Verwandte Themen