将图像保存为nsdata以进行plist并接收内存警告

时间:2014-01-05 00:32:02

标签: ios iphone xcode image memory-management

我的应用程序允许用户拍照并将其存储在手机上,以便稍后再参考。我已将其他用户信息存储在plist中,并尝试对图像执行相同操作。在摄像机拍摄照片后,UIImage将转换为NSData(使用UIImagePNGRepresentation)并存储在plist中。唯一的问题是,在存储了两三个图像后,应用程序会收到内存警告并崩溃。如果有人能告诉我一个更有效的方法将图像存储在plist中,我将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:1)

我建议您不要将图像保存到plist,将图像保存到Documents文件夹以及plist中该图像的路径。

答案 1 :(得分:0)

您可以使用/尝试保存文件系统,iOS中的每个应用程序都是沙盒,并且可以访问自己的文档文件夹。

我建议在文件系统上编写并保存数据库中的URL,因为这比在数据库中保存blob更有效。

Apple对iOS filesystem.

的评论很好

或者

如果您不能/不会在应用程序包中保存任何内容。您可以使用+[NSData dataWithContentsOfURL:]将图像存储在应用程序的文档目录中

NSData *imageData = [NSData dataWithContentsOfURL:myImageURL];
NSString *imagePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"/myImage.png"];
[imageData writeToFile:imagePath atomically:YES];

有用的链接save-and-get-image-from-plist

有用的链接how-to-store-an-image-path-in-a-plist