2012-05-08 11 views
7

Por lo tanto, el objeto NSCache debe permanecer activo para conservar los datos almacenados en caché, es decir, el mismo objeto que se usó para almacenar datos, para recuperar datos.Objetivo-c: ¿beneficios de usar NSCache sobre un NSMutableDictionary estático?

  • Entonces, ¿cuál es el punto de utilizar NSCache en un NSDictionary de un solo nombre que contiene mis datos?
  • ¿Cuál es la forma preferida de usar NSCache? campo estático? heredarlo y crear un singleton?

Respuesta

19

Un caché tiene una serie de caprichos que lo hacen funcionar bien como un caché, mientras que no es adecuado para su uso como una colección de propósito general. Como se señaló en los documentos:

objetos

NSCache difieren de otras colecciones mutables de varias maneras:

  • La clase NSCache incorpora diversas políticas de eliminación automática, que aseguran que no utiliza demasiado de la 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.
  • Puede agregar, eliminar y consultar elementos en la memoria caché desde diferentes subprocesos sin tener que bloquear la memoria caché usted mismo.
  • Recuperar algo de un objeto NSCache devuelve un resultado que se ha liberado automáticamente.
  • A diferencia de un objeto NSMutableDictionary, un caché no copia los objetos clave que se colocan en él.

Estas características son necesarias para la clase NSCache, ya que la caché puede decidir mutarse automáticamente de forma asincrónica entre bastidores si se llama a liberar memoria.

+0

Solo tenga cuidado al realizar pruebas ... la aserción "AssertEqualObjects" no va a funcionar en dos instancias distintas pero vacías de NSCache –

Cuestiones relacionadas