无法为类型'UnsafeMutablePointer''使用类型为'(UnsafeMuatableRawpointer?)'的参数列表调用初始值设定项'

问题描述:

我试图将我的项目更新为swift 3.0,并且在UnsafeMutablePointer中遇到了问题。无法为类型'UnsafeMutablePointer'<uint8>'使用类型为'(UnsafeMuatableRawpointer?)'的参数列表调用初始值设定项'

这里是我的错误

Cannot invoke initializer for type 'UnsafeMutablePointer<uint8>' with an argument list of type '(UnsafeMuatableRawpointer?)' 

代码:

let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) 
let src_buff = CVPixelBufferGetBaseAddress(imageBuffer!) 
let dataBuffer = UnsafeMutablePointer<UInt8>(src_buff) //error here 

为什么呢?如何解决它?

从空指针(又名UnsafeMutableRawPointer)将在斯威夫特3.改变你有2种选择:

如果你知道你的缓冲区长度(更安全):

let dataBuffer = src_buff?.bindMemory(to: UInt8.self, capacity: len) 

如果你不知道它:

let dataBuffer = src_buff?.assumingMemoryBound(to: UInt8.self) 
+0

thx !!!有效! –