保存到NSData阵列时的内存警告

时间:2013-10-04 11:24:13

标签: ios arrays memory warnings nsdata

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

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

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

我需要能够保存200张拍摄照片的信息。如何在没有记忆警告的情况下实现这一目标?

Btw:我正在使用Apple的SquareCam示例代码用相机拍照。

提前致谢。

2 个答案:

答案 0 :(得分:2)

如果你不缩放/保存为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;

答案 1 :(得分:1)

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