视频保存时的内存问题

时间:2014-09-02 07:27:48

标签: ios objective-c iphone memory-leaks

我正在从相机中选择视频并使用以下代码保存到本地目录

NSURL *selectedVideoURL = info[UIImagePickerControllerMediaURL];
NSData *videoData = [NSData dataWithContentsOfURL:selectedVideoURL];

NSString *filePath = [UICommonMethods getSaveVideoPath];
[videoData writeToFile:filePath atomically:YES];

但问题是当我录制5到10个视频时,应用程序因内存泄漏而崩溃。谁知道我们怎样才能控制记忆 但请记住,我从相机而不是从图书馆中选择视频。

2 个答案:

答案 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一次阅读,而不是一次性阅读...