13

我有一个使用 Swift 生成的桥接头的项目,并且项目设置正确(名称中没有空格,使用模块,在我的 .mm 文件中预先声明 Swift 类,删除派生数据,进行干净的重建等。 .)。桥接头生成良好,但自动生成的 -Swift.h 中有错误。更糟糕的是,这些错误出现在 AppDelegate 和 ViewController 的生成(在项目创建中 - Swift)版本上,通常可以正常编译。-Swift.h 中的错误是:

  • @interface AppDelegate : UIResponder <UIApplicationDelegate>
    >> 找不到“UIResponder”的接口声明,“AppDelegate”的超类
    >> 找不到“UIApplicationDelegate”的协议声明
  • @interface ViewController : UIViewController
    >> 找不到“UIViewController”的接口声明,“ViewController”的超类

我搜索了 Stack Overflow 和网络,但找不到任何解决此特定问题的答案。其他人有这个吗?或者,有没有一种方法可以标记我的 AppDelegate 和 ViewController 类,这样 Xcode就不会尝试为这些 Swift 类创建 Objective-C 存根,因为我实际上并不需要它们?

4

4 回答 4

18

只需添加

#import <UIKit/UIKit.h>

#import <YourProject-Swift.h>

在 .mm 文件中。对我来说它有帮助。

于 2017-03-15T10:43:54.603 回答
7

我有同样的问题并发现..

-Swift.h 仅适用于 Objective-C,不适用于 Objective-C++ (.mm)

所以我使用 Objective-C 类来连接 Swift 类。此外,您始终可以在您的 Objective-C 类中加载您的 Objective-C++ 类。

于 2015-06-02T06:59:55.817 回答
4

尝试将 UIKit/UIKit.h 导入桥接头文件。

于 2016-12-02T12:01:34.310 回答
0

Swift 不能很好地与 Objective-C++ 配合使用。因为我需要与 C++ 交互,所以我倾向于编写一个 Objective-C++ 类 MyClass_CPP,它只包含与 C++ 的接口,然后是一个可以很好地与 Swift 配合使用的 Objective-C 子类 MyClass。

于 2021-11-14T13:11:45.663 回答