我正在iPad模拟器中创建一些临时文件。要测试我的文件创建,我创建文件然后再读回来。以下是一些显示此代码的代码:
-(NSString *) writeToTempFile:(UIImage*) image{
NSString *path = [self createTemporaryFile];
NSLog(@"path: %@", path);
NSData *data = UIImageJPEGRepresentation(image, 1);
[data writeToFile:path atomically:YES];
free(data);
return path;
}
-(UIImage *) readTempFile:(NSString *) path{
NSData *data = [[NSData alloc] initWithContentsOfFile:path];
UIImage *image = [[UIImage alloc] initWithData:data];
return image;
}
在最后一个函数将UIImage写入相册之前,我会一个接一个地调用这些方法。
UIImageWriteToSavedPhotosAlbum(image2, self, nil, nil);
问题是,总是在第三次执行时崩溃了我的应用。第一次和第二次成功完成所有这些并存储到相册。第三次它崩溃回家。有什么想法吗?
答案 0 :(得分:6)
NSData *data = UIImageJPEGRepresentation(image, 1);
[data writeToFile:path atomically:YES];
free(data);
从UIImageJPEGRepresentation返回的NSData是-autorelease
d。没有必要free()
它。对free()
任何Objective-C对象错误 - 发送-release
消息。