2013-07-10 4 views
5

Kann zufällig jemand wissen, wie ich den Cache-Speicher der iOS-App, die ich gerade entwickle, im Hintergrund (applicationDidEnterBackground) leeren kann? Ich habe über NSCache nachgeforscht, aber ich bin immer noch nicht in der Lage zu verstehen, wie ich den Cache abrufen könnte, um ihn zu entfernen/zu befreien.Den Cache programmgesteuert in iOS leeren

+0

'[myCache removeAllObjects];' sollte es tun. –

+0

Danke für Ihre Antwort. Wie kann ich den Wert für "myCache" deklarieren/erhalten? Danke nochmals –

+0

Sie können es zum Beispiel als jede andere Eigenschaft erklären: '@property (strong) NSCache * myCache' und verwenden fast das gleiche wie' NSMutableDictionary'. Einige Beispiele hier: http://stackoverflow.com/questions/5755902/how-to-use-nscache –

Antwort

4

Ist das, worüber du redest?

[[NSURLCache sharedURLCache] removeAllCachedResponses]; 

Sie können auch das Cache-Verhalten Ihrer Anfragen ändern, um selektiv Cache-Antworten. Wenn Sie zufällig AFNetworking verwenden, können Sie setCacheResponseBlock verwenden. Z.B. In einem Projekt stelle ich es so ein, dass nil für alle großen Video- und Audiodateien zurückgegeben wird. Aber erlauben Sie es, kleinere Bilddateien zwischenzuspeichern.

[streamingOperation setCacheResponseBlock:^NSCachedURLResponse *(NSURLConnection *connection, NSCachedURLResponse *cachedResponse) { 
    return nil; // Ensures we are not unecessarily caching asset data to Cache.db 
}]; 
+0

Hallo Alfie! Ich bin mir nicht sicher, ob das für mich funktioniert. Das einzige, was ich brauche, ist den Cache-Speicher zu säubern, wenn der Benutzer in seinem/ihrem iPad die App in den Hintergrund sendet. Zum Beispiel glaube ich, dass das Passwort und bestimmte Daten immer irgendwo im Speicher bleiben (anders als der Schlüsselbund-Wrapper), also müssen diese Daten aus Sicherheitsgründen entfernt werden. Was ich noch nicht weiß, ist, wie ich mein Programm mit Code anzeige, dass ich alle Daten im Cache abrufen und freigeben muss. Erkläre ich mich selbst? Vielen Dank für Ihr Interesse. –

+0

Ja, diese zusätzliche Information hilft mir, Ihre Frage besser zu verstehen. Können Sie mir ein paar Beispiele von Daten geben, die Sie aus dem In-Memory-Cache löschen möchten, auch warum Sie das Bedürfnis haben, es zu löschen? –

+0

Wenn Sie besonders besorgt sind über die Sicherheit eines Passworts, während es sich im Speicher befindet, bin ich fast sicher, dass niemand aus dem Speicher auf diese Daten zugreifen kann (d. H. Es muss nicht gelöscht werden/kein Problem). Wenn Sie es in NSUserDefaults speichern, wäre das ein Problem. Je nachdem, wo Ihr Verweis auf das Kennwort vorhanden ist, können Sie diese Eigenschaft auch nur auf Hintergrund festlegen. –

Verwandte Themen