ios - 在导入 Swift header 的桥接 header 中导入文件

标签 ios objective-c swift

我一直遇到错误,告诉我 Xcode 无法导入桥接 header 。我注意到只有当我导入一个导入我的 Swift header (ProjectName-swift.h) 的特定类时才会发生这种情况。

是否可以导入一个导入 Swift header 的类?如果没有,我如何在我的 Swift 类中使用导入 Swift header 的类,同时仍然能够在文件中使用我需要的 Swift 代码?

最佳答案

将 Swift header 导入从类的头文件移至该类的实现文件,并使用 @class 对 Swift 类进行前向声明。

例如,如果您需要为名为 MySwiftClass 的 Swift 类导入 Swift header ,那么在您的 header 文件中的 @interface 之前,放置以下行:

@class MySwiftClass;

这将允许您在不直接导入 Swift 头文件的情况下编译您的头文件。您的实现仍然需要它,因此应将 import 语句移至实现文件。

如果您尝试转发声明的是协议(protocol),也可以这样做。您只需使用 @protocol 关键字。

使用类或协议(protocol)的前向声明是 Objective-C 打破循环依赖的方法,即使只使用 Objective-C 代码也是如此。有时甚至有必要对同一头文件中定义的类或协议(protocol)使用前向声明,例如,如果您有一个协议(protocol)和类都相互引用。

关于ios - 在导入 Swift header 的桥接 header 中导入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36434410/

相关文章:

iphone - 声明基本类型属性

ios - 我如何获得子字符串?

arrays - 数组的大小在 Swift 中总是返回 0

swift - 工具提示不再显示

ios - 展开时 SKScene 到 SKScene 零问题

ios - AFJSONRequestOperation - 失败时中断操作队列

ios - 我只想在 coredata objective-c 中保存时间而不是日期和时间

ios - 构建用于在 iOS 4 和 iOS 5 设备上运行 .ipa 的设置

ios - 如何禁止继承init方法?

ios - 在本地存储和删除文本文件 ios objective c