2011-06-22 10 views
13

¿Alguien me puede explicar brevemente cuándo necesitaría usar NSCache? Leo la documentación y no la entiendo. ¿Me das un ejemplo de un escenario en el que NSCache sería útil? Gracias.¿Qué es NSCache?

+0

¿Por qué lo preguntas? ¿Para qué te gustaría usarlo? ¿Qué te hizo mirarlo? En resumen, ¿cuál es el problema que estás tratando de resolver? –

+1

Estaba navegando por la lista de clases en documentos y lo encontré. Lo encontré interesante ... sin una razón en particular. – sumderungHAY

Respuesta

16

Es más o menos igual que un diccionario, con las siguientes cosas adicionales (como se ha mencionado por el docs):

La clase NSCache incorpora diversas políticas de eliminación automática, que asegurarse de que no utiliza Demasiado de la memoria del sistema. El sistema lleva a cabo automáticamente estas políticas si la memoria es necesaria para otras aplicaciones . Cuando se invoca, 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 el 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.

Puede usarlo si su aplicación tiene muchos datos con los que necesita trabajar, pero no puede mantener todo en la memoria. Por ejemplo, si tiene una aplicación que extrajo datos de una base de datos SQL Lite o de un servicio web, puede almacenarla en un NSCache después de buscarla. Luego, cuando lo necesite nuevamente, puede verificar primero el caché y solo debe presionar la base de datos si no está en el caché. La principal ventaja en este escenario sobre el uso de un diccionario normal es que si coloca demasiadas cosas en la memoria caché y comienza a llenar la memoria, automáticamente descartará cosas para liberar memoria para usted.

+0

Gracias, hombre, está muy claro ahora. – sumderungHAY

+0

Es muy interesante que no copie la clave, supongo que significa que la clave podría cambiar después de que se establezca, lo que tiene una implicación extraña, al comparar direcciones clave o hash. Presumiblemente aún hashes. Tengo que pensar en dónde puedo usar esto. Además de usar claves no compatibles con NSCopying. –

+1

Lo divertido es que he utilizado para recuperar 27k entradas de mi base de datos sql local y el uso de NSCache ahora toma menos de un segundo en lugar de 5 segundos completos. Gracias hombre – Eugene