2012-10-31 10 views
11

Ich habe festgestellt, dass NSCache alle seine Objekte entfernt, wenn die Anwendung im Hintergrund ausgeführt wird. Ist das das erwartete Verhalten? Gibt es einen Weg, es zu vermeiden?NSCache und Hintergrund

Ich würde erwarten, dass es Objekte vertreiben wird, wenn das Gerät keinen Speicher mehr hat, nicht sofort, wenn die App im Hintergrund läuft.

Kennen Sie eine gültige Alternative?

Antwort

1

Die Kommentare in diesem verwandten Post zeigen an, dass ein NSCache gelöscht wird, wenn die App in den Hintergrund tritt. NSCache is not evicting data

7

In meinem Fall passierte das, wenn in NSCache gespeicherte Objekte nicht dem NSDiscardableContent-Protokoll entsprechen. Wenn ich das genannte Protokoll hinzufüge, verschwindet die Räumung von Objekten, wenn die App in den Hintergrund eintritt.

Darüber hinaus, basierend auf der Quelle von NSCache.m Ich fand here, Objekte, die NSDiscardableContent-Protokoll nicht entsprechen, werden zur Laufzeit nie entfernt, auch die App benötigt mehr Arbeitsspeicher und sollte einige seiner Elemente entfernen. Vielleicht ist das der Grund, warum nicht-NSDiscardableContent-Objekte entfernt werden, wenn die App in den Hintergrund tritt, da dies ein guter Zeitpunkt für die Räumung ist.