在 Swift 中使用 Objective-C typedef void
Using an Objective-C typedef void in Swift
我在新的 Swift 环境中使用 Objective-C API。在大多数情况下,一切都运行良好,但我遇到了 typedef 问题。
API 的 typedef 定义为:
typedef void* TESTHANDLE;
通常在 Objective-C 中,我会像声明任何类型的变量一样简单地使用它:
TESTHANDLE NewTestHandle;
下图是使用此方法的 Objective-C 项目的示例。
我想在 Swift 中声明一个新的 TESTHANDLE 变量,就像我在上面所做的那样。后面代码中需要给TestHandle赋值,类型为TESTHANDLE.
仔细阅读这篇文章,我发现类型别名现在是可行的方法,但我无法更改 API。
如何在 Swift 中使用 Objective-C 中的这个 typedef?
您只需在项目中添加桥接 header 即可。
以下面的例子为例 Objective C class:
将 header 文件添加到您的项目。默认命名约定为 -Bridging-Header.h
使用#import 语句将您的 Objective-C API header 导入此 header。
- 在项目构建设置下,通过将它的路径放在 "Objective-C Bridging Header" 中,将这个 header 设置为你的 Objective-C 和 Swift 世界之间的桥梁。 .xcodeproj 的相对路径将简单地工作。
- 照常使用Swift中的类型
但是请记住,所有此类类型在 Swift 中都将被视为 UnsafeRawPointer
或 UnsafeMutableRawPointer
。
我在新的 Swift 环境中使用 Objective-C API。在大多数情况下,一切都运行良好,但我遇到了 typedef 问题。
API 的 typedef 定义为:
typedef void* TESTHANDLE;
通常在 Objective-C 中,我会像声明任何类型的变量一样简单地使用它:
TESTHANDLE NewTestHandle;
下图是使用此方法的 Objective-C 项目的示例。
我想在 Swift 中声明一个新的 TESTHANDLE 变量,就像我在上面所做的那样。后面代码中需要给TestHandle赋值,类型为TESTHANDLE.
仔细阅读这篇文章,我发现类型别名现在是可行的方法,但我无法更改 API。
如何在 Swift 中使用 Objective-C 中的这个 typedef?
您只需在项目中添加桥接 header 即可。
以下面的例子为例 Objective C class:
将 header 文件添加到您的项目。默认命名约定为 -Bridging-Header.h
使用#import 语句将您的 Objective-C API header 导入此 header。
- 在项目构建设置下,通过将它的路径放在 "Objective-C Bridging Header" 中,将这个 header 设置为你的 Objective-C 和 Swift 世界之间的桥梁。 .xcodeproj 的相对路径将简单地工作。
- 照常使用Swift中的类型
但是请记住,所有此类类型在 Swift 中都将被视为 UnsafeRawPointer
或 UnsafeMutableRawPointer
。