首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVAssetWriter资料泄露

AVAssetWriter资料泄露
EN

Stack Overflow用户
提问于 2011-05-28 03:37:09
回答 1查看 971关注 0票数 1

你好,我是ios开发的新手,我遇到了一些问题

我做了一些类似AVAssetWriter的对象的设置(我用它将像素映射作为帧写入视频-它工作得很好)

代码语言:javascript
复制
    self.assetWriter = [[AVAssetWriter alloc] initWithURL:outputPath fileType:AVFileTypeQuickTimeMovie error:&error];

    NSMutableDictionary *dic=[[NSMutableDictionary alloc] init];
    [dic setValue: AVVideoCodecH264 forKey: AVVideoCodecKey];
    [dic setValue:[NSNumber numberWithInt:640] forKey:AVVideoWidthKey];
    [dic setValue:[NSNumber numberWithInt:480] forKey:AVVideoHeightKey];
     self.assetWriterInput = [[AVAssetWriterInput alloc] initWithMediaType:AVMediaTypeVideo outputSettings:dic];
      [dic release];

    assetWriterInputPixelBufferAdaptor =[[AVAssetWriterInputPixelBufferAdaptor alloc] initWithAssetWriterInput:assetWriterInput sourcePixelBufferAttributes:nil];

    self.assetWriterInput.expectsMediaDataInRealTime=YES;
    [self.assetWriter addInput:assetWriterInput];

    [self.assetWriter startWriting];
    [self.assetWriter startSessionAtSourceTime:recordStartTime];

然后保存视频,然后释放实例

代码语言:javascript
复制
[self.assetWriterInput markAsFinished];
[self.assetWriter endSessionAtSourceTime:recordStartTime];
[self.assetWriter finishWriting];

CVPixelBufferPoolRelease(assetWriterInputPixelBufferAdaptor.pixelBufferPool);
[self.assetWriter release];
[self.assetWriterInput release];
[self.assetWriterInputPixelBufferAdaptor release];

问题是,当我多次使用上述对来创建和释放实例以保存几个视频时,Instruments会显示泄漏

帮助!

EN

回答 1

Stack Overflow用户

发布于 2011-05-28 08:35:31

代码语言:javascript
复制
AVAssetWriter *newWriter = [AVAssetWriter alloc] // retain count is 1. 
self.assetWriter = newWriter // What this actually does:

- (void)setAssetWriter(AVAssetWriter*)newWriter
{
    if (_assetWriter != newWriter)
    {
        [_assetWriter release]
        _assetWriter = [newWriter retain]; //retain count 2
    }
}

[self.assetWriter release]; //retain count 1

如果您忘记在dealloc中添加self.assetWriter = nil;,您最终会泄漏。在分配实例并通过@properties分配它们时,将自动释放附加到分配行,如下所示:

代码语言:javascript
复制
self.assetWriter = [[[AVAssetWriter alloc] initWithURL:outputPath fileType:AVFileTypeQuickTimeMovie error:&error] autorelease]; 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6156917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档