【问题标题】:Cannot invoke initializer for type 'UnsafeMutablePointer<Int32>' with an argument list of type '(Int32?)'无法使用类型为“(Int32?)”的参数列表调用类型“UnsafeMutablePointer<Int32>”的初始化程序
【发布时间】:2018-03-28 23:14:20
【问题描述】:

我正在尝试将 ffmpeg 的一些方法和指针实现为 Swift,但将其转换为 Swift 有点复杂。这个错误是什么意思?

无法使用“(Int32?)”类型的参数列表调用“UnsafeMutablePointer”类型的初始化程序?

代码如下

let pictureFrameData = av_malloc(Int(numBytes))
                                var test = frame?.pointee.linesize.0.
                                av_image_fill_arrays(UnsafeMutablePointer(frameRGB?.pointee.data.0),
                                                     UnsafeMutablePointer<Int32>(frame?.pointee.linesize.0)!,
                                                     pictureFrameData,
                                                     frameRGB?.pointee.format,
                                                     frameRGB?.pointee.width,
                                                     frameRGB?.pointee.height,
                                                     1)

错误在这一行UnsafeMutablePointer&lt;Int32&gt;(frame?.pointee.linesize.0)

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    如果函数需要 'UnsafeMutablePointer&lt;Int32&gt; 参数 那么您必须将Int32 值作为“inout 参数”与&amp; 一起传递:

    var linesize: Int32 = ...
    av_image_fill_arrays(..., &lineSize, ...)
    

    【讨论】:

    • 谢谢!让我试试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多