【发布时间】:2017-08-29 22:51:57
【问题描述】:
我正在开发一个访问 C 库的 Swift 应用程序。
.h 文件包含一个 typedef 结构:
typedef struct _DATA_KEY_ * CURRENT_DATA_KEY;
另外一个类中有一个方法:
-(int) initWithKey(CURRENT_DATA_KEY * key);
我需要在我的代码中创建一个 CURRENT_DATA_KEY。不知道如何在 Swift 中实现这一点。
有一些旧的 Objective-C 代码使用:
CURRENT_DATA_KEY key = NULL;
initWithKey(key)
我试过了:
let myKey = UnsafeMutablePointer<CURRENT_DATA_KEY>.allocate(capacity: 1)
但是当我稍后尝试将它用作函数中的参数时,我得到了错误:
Cannot convert value of type 'UnsafeMutablePointer<_DATA_KEY_>' (aka 'UnsafeMutablePointer(<OpaquePointer>)') to expected argument type 'UnsafeMutablePointer(<_DATA_KEY_?>!)'
看起来该函数需要一个可选值?
我也试过了:
let myKey: CURRENT_DATA_KEY? = nil
let myKey: CURRENT_DATA_KEY = NSNull()
但那些会得到类似的类型错误。
如何创建:UnsafeMutablePointer(<_DATA_KEY_?>!)
【问题讨论】:
-
var myKey: CURRENT_DATA_KEY = nil工作吗? -
不,它不起作用。
标签: ios c swift bridging-header