Objective-c - Vorteile der Verwendung von NSCache über ein statisches NSMutableDictionary?

7

Daher sollte das NSCache-Objekt am Leben bleiben, damit die zwischengespeicherten Daten, dh das gleiche Objekt, das zum Speichern von Daten verwendet wurde, zum Abrufen von Daten verwendet werden müssen.

  • Die Frage ist also, warum NSCache über ein Singleton-NSDictionary verwendet werden soll, das meine Daten enthält?
  • Was ist der bevorzugte Weg, um NSCache zu verwenden? statisches Feld? erben Sie es und erstellen Sie ein Singleton?
aryaxt 08.05.2012, 16:44
quelle

1 Antwort

20

Ein Cache weist eine Reihe von Macken auf, die es gut als Cache funktionieren lassen, während er für die Verwendung als allgemeine Sammlung schlecht geeignet ist. Wie in der Dokumentation erwähnt:

  

NSCache-Objekte unterscheiden sich auf verschiedene Weise von anderen änderbaren Sammlungen:

     
  • Die NSCache-Klasse enthält verschiedene automatische Entfernungsrichtlinien, die sicherstellen, dass nicht zu viel Speicher des Systems beansprucht wird. Das System führt diese Richtlinien automatisch aus, wenn von anderen Anwendungen Speicher benötigt wird. Wenn diese Richtlinien aufgerufen werden, entfernen sie einige Elemente aus dem Cache, wodurch der Speicherbedarf minimiert wird.
  •   
  • Sie können Elemente im Cache aus verschiedenen Threads hinzufügen, entfernen und abfragen, ohne den Cache selbst sperren zu müssen.
  •   
  • Wenn Sie etwas von einem NSCache-Objekt abrufen, wird ein automatisch zurückgegebenes Ergebnis zurückgegeben.
  •   
  • Im Gegensatz zu einem NSMutableDictionary-Objekt kopiert ein Cache die darin eingefügten Schlüsselobjekte nicht.
  •   

Diese Features sind für die NSCache-Klasse erforderlich, da der Cache sich möglicherweise selbst asynchron im Hintergrund mutieren lässt, wenn er aufgerufen wird, um Speicher freizugeben.

    
Chuck 08.05.2012, 16:57
quelle

Tags und Links