首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的AVFoundation/AVCaptureSession内存泄漏在哪里?

我的AVFoundation/AVCaptureSession内存泄漏在哪里?
EN

Stack Overflow用户
提问于 2014-09-05 19:00:56
回答 1查看 1.6K关注 0票数 0

我使用AVCaptureSession来“录制”音频和视频,并使用AVAssetWriter来实际录制它。当我的viewController加载时,视图显示相机上的“实况提要”,但还没有记录(存储到磁盘)。然而,记忆的使用逐渐上升,而且不会停止。我使用了Instruments,并试图找到一个漏洞,但我不知道如何解释。行VM:Allocation 16,00 KB不断增加,我不知道它是什么。

在这一点上,我对委托方法的实现几乎什么也不做:

代码语言:javascript
复制
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:
(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
{
    CMFormatDescriptionRef formatDescription = CMSampleBufferGetFormatDescription(sampleBuffer);

    CFRetain(sampleBuffer);
    CFRetain(formatDescription);

    dispatch_async(movieWritingQueue, ^{

        //If recording
        if(assetWriter){
            //do stuff
        }
    });

    CFRelease(sampleBuffer);
    CFRelease(formatDescription);
}

问题是:当加载视图时(在开始记录之前),assetWriter总是为零,这是它应该做的。因此,每次调用上述委托方法时,它都不应该做任何事情。我从来没有做过很多释放任何事情,因为ARC一直为我解决这个问题。我是不是对CF-things做错了什么?

我的方法是否每次都存储这些变量中的一个?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-05 20:16:44

在这里回答我自己的问题:

在开发的早期,我打开了Enable Zombie Objects,以便更好地调试我遇到的一个奇怪的异常。显然,这个设置会创建僵尸,或者可能阻止发布某些对象或其他东西。通过通过Product->Edit Scheme->Enable Zombie Objects禁用此选项,它将按照预期的方式工作,不会出现泄漏。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25692320

复制
相关文章

相似问题

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