我正在构建一个应用程序,允许用户使用设备摄像机连续拍摄几张照片。
每次拍摄图片时,都会将其作为NSData变量发送到数组中。问题是:当数组得到大约30张图片时,它开始创建内存警告,并最终导致应用程序崩溃。
当我离开这个视图时,我会将数组保存到NSUserDefaults中,这也会导致内存警告和崩溃。
我需要能够保存大约200张照片的信息。在没有内存警告的情况下,我如何做到这一点?
顺便说一句:我正在用苹果的SquareCam示例代码用相机拍照。
提前谢谢。
发布于 2013-10-04 03:50:33
如果您不缩放/保存为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-04 03:56:59
请不要保存图片,只保存image.so的路径,您可以更好地管理它们,并更好地为您的应用程序。性能。
https://stackoverflow.com/questions/19180016
复制相似问题