好吧,我的问题是当我使用相机UIImagePicker并且手机内存不足时。它会抛出内存警告并卸载视图然后重新加载。
我知道这是一个非常普遍的问题,很多问题已经存在。我不打算这样做。
- (void)viewDidLoad
{
[super viewDidLoad];
MyPersonClass *persons = [[MyPersonClass alloc] init];
persons.images = [NSMutableDictionary dictionaryWithCapacity:4];
....
...
}
我的问题是我的视图控制器有四个按钮和UIImageViews,当我点击每个按钮时,它们打开相机,点击的图像显示在UIImageViews中,这些图像也存储在persons.images
NSMutable字典中。
有时会抛出流行的内存警告错误并卸载视图,这会删除UIImageView中的所有图像,这些图像是在内存警告之前拍摄的,我丢失了persons.iamges
中的所有内容我只是想要检索这个数据回来了。我不知道在哪里存储它(我不想为此使用CoreData)谢谢
请帮忙
答案 0 :(得分:1)
当调用 viewDidUnload 时,您可以维护用于存储图像的实例变量。在 viewDidUnload 中设置标记,然后存储Imageviews的所有图像。在 viewDidLoad 中,检查是否已调用 viewDidUnload ,然后将保存的图像分配给ImageView。
答案 1 :(得分:0)
您可以将MutableDictionary保存为沙箱应用程序中的plist,就像那样
[yourMutableDictionary writeToFile:pathToSave atomically:YES];
然后,通过这种方式获取您的NSMutableDictionary
NSMutableDictionary *containOfPlist = [NSMutableDictionary arrayWithContentsOfFile:pathToYourPlist];
希望这就是你想要的。
答案 2 :(得分:0)
请使用NSCache存储具有KeyValue对的图像。 在内存警告上将NSCache对象写入文件并在低内存警告回调时清除NScache对象中的所有对象。 再次加载应用程序从该文件中放出NSCAche。
所以我这样可以保存数据并可以使用它。
另一个备选方案是使用NSArchiver类来获取NSDictnaory并存储它。