应用程序崩溃在dispatch_release Semaphore上?

时间:2013-09-16 13:24:32

标签: iphone ios objective-c gpuimage gpuimagestillcamera

我正在使用GPUImage框架,使用GPUImageVideoCamera录制视频。

它过去曾经非常完美地工作,但有时我会从我的相机屏幕来回走动,它有时会崩溃。我不知道发生了什么。我正在使用ARC和IOS 6.

我正在添加我的错误图片,请看一下。

This is first one

enter image description here

当释放frameRenderingSemaphore时,崩溃发生在GpuImageVideoCamera dealloc方法中:

// ARC forbids explicit message send of 'release'; since iOS 6 even for dispatch_release() calls: stripping it out in that case is required.
#if ( (__IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_6_0) || (!defined(__IPHONE_6_0)) )    
    if (frameRenderingSemaphore != NULL)
    {
        dispatch_release(frameRenderingSemaphore);
    }
#endif

2 个答案:

答案 0 :(得分:3)

看来这不是ARC /非ARC的问题(我尝试过使用和不启用ARC的GPUImage构建)。

我发现的是,在释放GPUImageVideoCamera之前,你需要阻止它捕获任何帧。然后在[camera release]上安排对GPUImageContext.contextQueue的调用,这将确保在处理完所有帧后调用该版本。

很抱歉没有发布更多示例代码,现在使用Xamarin / C#的GPUImage,因此翻译有点麻烦。

答案 1 :(得分:0)

尝试删除项目中的所有断点,并执行产品 - &gt;清洁