【发布时间】:2019-09-14 09:08:10
【问题描述】:
我几乎可以肯定这个标题是不正确的,但这里是......
我正在桥接一个 Objective-C 类来设置 typedef。桥已建立,我可以正确声明 typedef var。
在 Objective-C 中,我还从同一个类中调用了一个方法,该方法在调用时会向变量 TestHandle 输出一个值。
var TestHandle : TESTHANDLE
TestInit(&TestHandle)
当我使用 Swift 5 尝试此操作时,我收到此错误:
Cannot convert value of type 'inout TESTHANDLE' (aka 'inout UnsafeMutableRawPointer') to expected argument type 'UnsafeMutablePointer<TESTHANDLE?>?' (aka 'Optional<UnsafeMutablePointer<Optional<UnsafeMutableRawPointer>>>')
任何指针?
【问题讨论】:
-
UpperCamelCase 保留用于 Swift 中的类型名称。您应该使用 lowerCamelCase 命名您的变量、属性等。
-
罗杰,从现在开始这样做
-
这个 API 的文档是什么? C 的 API 非常依赖文档(因为 C 的类型系统本身并没有太多的交流,例如谁负责分配和释放给定的指针)
-
您可以点击链接完成所有操作:raywenderlich.com/… 更具体地说,您的
TestInit函数需要TESTHANDLE*akavoid**。如果是这样,您需要将变量TestHandle声明为var TestHandle: UnsafeMutablePointer<HANDLE?>
标签: ios swift typedef unsafemutablepointer