【问题标题】:Memory warning when saving to NSData Array保存到 NSData 数组时出现内存警告
【发布时间】:2013-10-11 09:08:09
【问题描述】:

我正在构建一个应用程序,允许用户使用设备相机连续拍摄多张照片。

每次拍摄一张图片时,它都会作为 NSData 变量发送到一个数组中。问题是:当数组达到 30 张图片时,它开始创建内存警告并最终导致应用程序崩溃。

当我离开该视图时,我将该数组保存到 NSUserDefaults,这也可能导致内存警告和崩溃。

我需要能够保存大约 200 张照片的信息。如何在没有内存警告的情况下实现这一点?

顺便说一句:我正在使用 Apple 的 SquareCam 示例代码来使用相机拍照。

提前致谢。

【问题讨论】:

    标签: ios arrays memory warnings nsdata


    【解决方案1】:

    如果您不缩放/另存为 jpg,则照片可能会很大。一种解决方案是立即将其保存在沙盒中的“磁盘”上(无论如何,jpeg 格式都是一个好主意)并仅将您保存的文件的路径存储在您的数组中。

    查看示例代码:

        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSString* imgName = [NSString stringWithFormat:@"%@.jpg", self.uid];
        NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:imgName];
        NSData *webData = UIImageJPEGRepresentation(self.theImage, 0.5);
        [webData writeToFile:imagePath atomically:YES];
        self.imageURL = imagePath;
    

    【讨论】:

    • 谢谢!它帮助了我。
    【解决方案2】:

    请不要保存图像,只保存图像的路径。所以,您可以更好地管理它们并更好地为您的应用程序。性能。

    【讨论】:

      猜你喜欢
      • 2014-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-30
      • 2013-03-08
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      相关资源
      最近更新 更多