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

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

当我离开该视图时,将该阵列保存到NSUserDefaults中,这也会导致内存警告和崩溃。

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

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

提前致谢。

最佳答案

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

关于ios - 保存到NSData阵列时出现内存警告,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19180016/

10-11 23:11
查看更多