尝试编译以下代码我得到上述错误:
let ref = CMSampleBufferGetImageBuffer(sampleBuffer)
let image = CIImage(CVImageBuffer: ref)
我可以说,CIImage有一个初始化程序只接受一个CVImageBuffer(它有另一个初始化程序,也接受一个选项参数。如果我尝试提供它,我得到一个错误,我有一个额外的参数叫做options,blurgh)
任何想法如何解决这个问题?
答案 0 :(得分:0)
很简单!事实证明问题是我没有通过正确的种引用。
行let ref = CMSampleBufferGetImageBuffer(sampleBuffer)
实际上将ref
声明为Unmanaged<>
结构值,这意味着尚未正确注释API以指示ARC应解释哪种保留/未保留关系。它基本上被认为是一个松散的经典。
所以我要做的就是明确地告诉编译器给我一个没有保留的版本,然后代码运行得很好。
let ref : CVImageBufferRef = CMSampleBufferGetImageBuffer(sampleBuffer).takeUnretainedValue()
let image = CIImage(CVImageBuffer: ref)