Cómo persistir valores después de una vista de advertencia de memory. DescargarDescarga

Ok, mi problema es cuando uso la camera UIImagePicker y el teléfono tiene poca memory. Lanza una advertencia de memory y descarga la vista y luego vuelve a cargar.

Sé que este es un problema muy común y muchas preguntas ya están en el SO. No voy a entrar en esto.

- (void)viewDidLoad { [super viewDidLoad]; MyPersonClass *persons = [[MyPersonClass alloc] init]; persons.images = [NSMutableDictionary dictionaryWithCapacity:4]; .... ... } 

Mi problema es que el controller de mi vista tiene cuatro botones y UIImageViews y cuando presiono cada uno, abren la camera y la image que se hace clic se muestra en UIImageViews y estas imágenes también se almacenan en el file images.NAMMutable persons.images.

introduzca la descripción de la imagen aquí

En algún momento arroja el popular error de advertencia de memory y descarga la vista y esto elimina todas las imágenes en el UIImageView que se tomaron antes de la advertencia de memory y pierdo todo en persona. Simplemente quiero recuperar estos datos. No sé dónde almacenarlo (no quiero usar CoreData para esto) Gracias por favor ayuda

Puede mantener variables de instancia para almacenar la image cuando se invoca viewDidUnload . establezca una bandera en viewDidUnload y luego almacene todas las imágenes de sus Imageviews. Y en viewDidLoad, compruebe el indicador que si callDidUnload se llamó y luego asigne las imágenes guardadas a su ImageView.

Puede save su MutableDictionary como un plist en la aplicación sandbox como esa

 [yourMutableDictionary writeToFile:pathToSave atomically:YES]; 

Y luego, obtenga su NSMutableDictionary de esta manera

 NSMutableDictionary *containOfPlist = [NSMutableDictionary arrayWithContentsOfFile:pathToYourPlist]; 

Espero que esto sea lo que quieres.

use el NSCache para almacenar las imágenes con el par KeyValue. En la advertencia de memory, escriba el object NSCache para archivar y borre todos los objects del object NScache en una llamada de advertencia de baja memory. en la aplicación de carga otra vez rad la NSCAche de ese file.

así que de esa manera puedes save los datos y volverlos a usar.

otra opción alternativa es tomar NSDictnaory y almacenarla mediante el uso de la class NSArchiver.