从剖析中Instruments我了解到,我将图像保存到磁盘的方式导致了内存峰值~60MB.这导致应用程序发出low memory warnings,(不一致)导致iPhone4S运行中的崩溃iOS7.
我需要最有效的方法将图像保存到磁盘.
我目前正在使用此代码
+ (void)saveImage:(UIImage *)image withName:(NSString *)name {
NSData *data = UIImageJPEGRepresentation(image, 1.0);
DLog(@"*** SIZE *** : Saving file of size %lu", (unsigned long)[data length]);
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:name];
[fileManager createFileAtPath:fullPath contents:data attributes:nil];
}
Run Code Online (Sandbox Code Playgroud)
笔记:
减少compressionQuality参数值UIImageJPEGRepresentation不会显着降低内存峰值.例如
compressionQuality = 0.8,3MB通过100写入平均减少内存峰值.但是,它确实减少了磁盘上数据的大小(显然),但这对我没有帮助.
UIImagePNGRepresentation取而代之的 …