在Swift中使用Objective-C typedef void

时间:2019-04-25 00:33:37

标签: objective-c swift typedef type-alias

我正在新的Swift环境中使用Objective-C API。在大多数情况下,一切都运行良好,但我陷入了typedef问题。

API的typedef定义为:

typedef void* TESTHANDLE;

通常在Objective-C中,我将像声明任何类型的变量一样简单地使用它:

TESTHANDLE NewTestHandle;

下图是使用此对象的Objective-C项目的示例。

enter image description here

我想在Swift中声明一个新的TESTHANDLE变量,就像我上面做的一样。我需要稍后在代码中为TestHandle分配一个值,类型为TESTHANDLE。

enter image description here

仔细阅读该文章,我发现typealias现在是解决问题的方法,但我无法更改API。

如何在Swift中使用Objective-C中的typedef?

1 个答案:

答案 0 :(得分:1)

您只需在项目中添加桥接标题即可。

以以下Objective C类为例:

enter image description here

  1. 将头文件添加到您的项目。默认命名约定为-Bridging-Header.h

  2. 使用#import语句将您的Objective-C API标头导入此标头。

enter image description here

  1. 在项目“构建设置”下,通过将其标题置于“ Objective-C桥接标题”中,将此标题设置为Objective-C与Swift世界之间的桥梁。您的.xcodeproj的相对路径将简单起作用。

enter image description here

  1. 像往常一样在Swift中使用类型

enter image description here

但是请记住,在Swift中所有这些类型都将被视为UnsafeRawPointerUnsafeMutableRawPointer