【发布时间】:2016-09-26 10:03:40
【问题描述】:
我正在将我的一个 iOS 应用程序移植到 Swift3 / Xcode8。 我嵌入了一个 C 库,它需要一个函数参数类型:
char ***
在 Swift2.3 中,这被翻译成:
UnsafeMutablePointer<UnsafeMutablePointer<UnsafeMutablePointer<Int8>>>
所以我可以像这样在我的 swift 代码中声明该指针:
let myPointer = UnsafeMutablePointer<UnsafeMutablePointer<UnsafeMutablePointer<Int8>>>.alloc(1)
在我使用 Swift3 更新到 Xcode8 之前效果很好,现在我收到编译器错误:
Cannot convert value of type 'UnsafeMutablePointer<UnsafeMutablePointer<UnsafeMutablePointer<Int8>>>' to expected argument type 'UnsafeMutablePointer<UnsafeMutablePointer<UnsafeMutablePointer<Int8>?>?>!'
谁能帮我理解 swift3 的变化?这个 Optional, Optional, Implicit Unwrapped Optional (?) 在这种情况下是什么意思,我如何声明这个类型的指针?
【问题讨论】:
-
但是我没有收到任何错误
let _ = UnsafeMutablePointer<UnsafeMutablePointer<UnsafeMutablePointer<Int8>>>.allocate(capacity: 1) -
@AlvinVarghese 当我将它作为参数传递给需要
char ***类型的 C 函数时,我收到错误消息
标签: swift3 xcode8 unsafemutablepointer