我正在将我的一个 iOS 应用程序移植到 Swift3/Xcode8。我嵌入了一个 C 库,它需要一个类型的函数参数:
char ***
在 Swift2.3 中,这被翻译成:
UnsafeMutablePointer<UnsafeMutablePointer<UnsafeMutablePointer<Int8>>>
所以我可以像这样在我的快速代码中声明该指针:
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 的变化吗?这个可选,可选,隐式未包装可选(?)在这种情况下意味着什么,我如何声明具有这种类型的指针?