我制作了一个示例项目,该项目在每个项目中都使用示例缓冲区。但后来我将这些文件添加到现有项目中。
然后,我介绍了videoController。开头captureOutput:(AVCaptureOutput *)output didOutputSampleBuffer
被调用,但此后不被调用。
我不知道这是否与内存使用量有关,但这是215MB。
我还通过重写didReceiveMemoryWarning
方法检查了内存警告,但是没有调用它。
- (void)captureOutput:(AVCaptureOutput *)output didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
{
dispatch_async( dispatch_get_main_queue(), ^{
CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
CGFloat frame_height = CVPixelBufferGetWidth(pixelBuffer);
CGRect vRect = CGRectMake(self.v.frame.origin.y * frame_height,
self.v.frame.origin.x ,
self.v.frame.size.height ,
self.v.frame.size.width);
});
}
在dispatch_async
中创建vRect会导致以下情况:
线程1:EXC_BAD_ACCESS(代码= 1,地址= 0xeba6d0dd0)
当我不使用dispatch_async
编写此代码时,几秒钟后不会调用captureOutput:(AVCaptureOutput *)output didOutputSampleBuffer
。