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

在这一点上,我对委托方法的实现几乎什么也不做:
- (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做错了什么?
我的方法是否每次都存储这些变量中的一个?
发布于 2014-09-05 20:16:44
在这里回答我自己的问题:
在开发的早期,我打开了Enable Zombie Objects,以便更好地调试我遇到的一个奇怪的异常。显然,这个设置会创建僵尸,或者可能阻止发布某些对象或其他东西。通过通过Product->Edit Scheme->Enable Zombie Objects禁用此选项,它将按照预期的方式工作,不会出现泄漏。
https://stackoverflow.com/questions/25692320
复制相似问题