在Swift中使用Objective-C typedef void

问题描述 投票:0回答:1

我在新的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

阅读这篇文章我发现现在的类型已经成为现实,但我无法改变API。

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

objective-c swift typedef type-alias
1个回答
1
投票

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

以下面的Objective C类为例:

enter image description here

  1. 将头文件添加到项目中。默认命名约定是-Bridging-Header.h
  2. 使用#import语句将Objective-C API标头导入此标头。

enter image description here

  1. 在项目构建设置下,通过将它的路径放在“Objective-C Bridging Header”中,将此标题设置为Objective-C和Swift世界之间的桥接。 .xcodeproj的相对路径将起作用。

enter image description here

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

enter image description here

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

© www.soinside.com 2019 - 2024. All rights reserved.