【问题标题】:Saving images as nsdata to plist and receiving memory warning将图像作为 nsdata 保存到 plist 并接收内存警告
【发布时间】:2014-01-22 14:12:57
【问题描述】:

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

【问题讨论】:

  • 您应该在保存时向我们提供更详细的信息,例如代码。
  • 在plist中存储图像最有效的方法是不在plist中存储图像。
  • 你需要发布你的代码

标签: ios iphone xcode image memory-management


【解决方案1】:

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

【讨论】:

【解决方案2】:

您可以使用/尝试保存在文件系统上,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

【讨论】:

    猜你喜欢
    • 2013-10-31
    • 2013-10-11
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    相关资源
    最近更新 更多