0

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

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

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

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

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

提前致谢。

4

2 回答 2

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;
于 2013-10-04T11:50:33.187 回答
1

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

于 2013-10-04T11:56:59.567 回答