2012-10-10 23 views
6

Soy muy nuevo en NSCache.¿Cómo almacenar datos en NSCache en iOS?

Tengo una llamada API que da como resultado varios objetos. Cómo almacenar estos objetos en NSCache para no tener que volver a llamar a la API.

Cuantos datos se pueden almacenar en NSCache. Existe un límite específico para almacenar los datos en NSCache.

Por favor, ayúdame.

Respuesta

10

Eche un vistazo a documentation y sample code.

objeto Una NSCache es un recipiente de recogida similar, o caché, que almacena pares de valores clave, similar a la clase NSDictionary.

Here es una buena explicación de Nick Zitzmann.

NSCache es similar a NSMutableDictionary, siendo las diferencias:
1. Se garantiza que sea seguro para subprocesos.
2. Es mucho más lento de acceder.
3. Puede arrojar objetos de vez en cuando. Puede establecer costos y límites, pero no se garantiza que se cumplan.
4. No es un puente gratuito para nada en CoreFoundation.
5. No puede consultar el número de objetos que están en la memoria caché.
6. No puede enumerar una memoria caché.

Solo puedo recomendar el uso de NSCache para almacenar objetos que no importarían sobre si fueron destruidos arbitrariamente. Si los objetos no deben ser destruidos, o si la velocidad de acceso es un problema, entonces use NSMutableDictionary en su lugar.

+0

Muchas gracias ... Gracias por el código de muestra .. –

+2

¿Se pregunta qué tan lento es? –

1

Desde documentación de su relevancia

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSCache_Class/Reference/Reference.html

El NSCache tiene una gran cantidad de políticas de eliminación automática, que aseguran que no utiliza demasiada cantidad de memoria del sistema. El sistema lleva a cabo automáticamente estas políticas si otras aplicaciones necesitan memoria. Cuando se invocan, estas políticas eliminan algunos elementos del caché, lo que minimiza su huella de memoria.

+0

Muchas gracias por su explicación ... Pero, ¿cuántos datos pueden almacenarse en NSCache? ¿Podemos almacenar 2MB de datos en NSCache? –

+0

@Pavi Eche un vistazo a la documentación. setTotalCostLimit: y setCountLimit: método. –

+0

@ParagBafna Gracias. Déjenme verificar eso. –

Cuestiones relacionadas