objective-c - 如何将 CVPixelBufferGetBaseAddress 调用转换为 Swift?

标签 objective-c swift

也许我是第一个在 Swift 中这样做的人,但网上似乎没有任何东西在 Swift 中使用 &/inout 和 uint8_t。有人可以翻译这个吗?这种关系是按位的吗?

Objective-C

uint8_t *buf=(uint8_t *) CVPixelBufferGetBaseAddress(cvimgRef);

快速尝试

let inout buf:uint8_t = SOMETHING HERE CVPixelBufferGetBaseAddress(cvimgRef)

最佳答案

CVPixelBufferGetBaseAddress()返回 UnsafeMutablePointer<Void> , 可以转换为 UInt8指针通过

let buf = UnsafeMutablePointer<UInt8>(CVPixelBufferGetBaseAddress(pixelBuffer))

更新 Swift 3 (Xcode 8),检查 Swift 5 (Xcode 11):

if let baseAddress = CVPixelBufferGetBaseAddress(pixelBuffer) {
    let buf = baseAddress.assumingMemoryBound(to: UInt8.self)
    // `buf` is `UnsafeMutablePointer<UInt8>`
} else {
    // `baseAddress` is `nil`
}

关于objective-c - 如何将 CVPixelBufferGetBaseAddress 调用转换为 Swift?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29814143/

相关文章:

ios - UILabel 的自动换行不起作用

arrays - 实例成员不能用于数组类型

ios - 无法使用参数传递 Timer.sheduledTimer

objective-c - 哪个类(模型或 Controller 或 View 类)应该存在鼠标事件处理方法

objective-c - 使用 NSOperationQueues 的核心数据和并发

objective-c - 复制自定义对象

ios - 拆除 UITableViewDataSource

ios - 将 Swift 闭包作为值添加到 Swift 字典

ios - 具有数字和可比较协议(protocol)的 Swift 泛型类

swift - 如何从类数组中获取不同的值?