我正在从相机中选择视频并使用以下代码保存到本地目录
NSURL *selectedVideoURL = info[UIImagePickerControllerMediaURL];
NSData *videoData = [NSData dataWithContentsOfURL:selectedVideoURL];
NSString *filePath = [UICommonMethods getSaveVideoPath];
[videoData writeToFile:filePath atomically:YES];
但问题是当我录制5到10个视频时,应用程序因内存泄漏而崩溃。谁知道我们怎样才能控制记忆 但请记住,我从相机而不是从图书馆中选择视频。
答案 0 :(得分:0)
NSData *videoData = [NSData dataWithContentsOfURL:selectedVideoURL];
上面的类方法,videoData无法直接释放,请尝试按照:
NSData *videoData = [[NSData alloc] initWithContentsOfURL: selectedVideoURL];
//做点什么。
[videoData release];
videoData = nil;
答案 1 :(得分:0)
使用图像选择器创建视频时,会创建临时视频文件。您可以将此文件移动到您需要的位置,而不是将其加载到内存中(无论如何都是坏的)然后复制它:
// Get paths
NSURL *selectedVideoURL = info[UIImagePickerControllerMediaURL];
NSString *filePath = [UICommonMethods getSaveVideoPath];
NSURL* fileUrl = [NSURL fileURLWithPath:filePath];
// Move file
[[NSFileManager defaultManager] moveItemAtURL:selectedVideoURL toURL:fileUrl error:nil];
如果您需要访问该文件的数据,请使用NSFileHandle一次阅读,而不是一次性阅读...