ble*_*erj 6 xcode objective-c swift bridging-header
在一个混合了 Obj-C 和 C++ 的 Swift 项目中,我有一个类扩展了属于第 3 方框架的类。当我编译项目时,编译器抱怨它Cannot find interface declaration for '<Framework Class Name>', superclass of '<My Subclass Name>'
语义错误指向自动生成的桥接头 ('MyProjectName-Swift.h' )。
除了将其标记为私有或文件私有之外,有没有办法不将特定类包含在桥接头中?(这使得子类在项目的其余部分没有多大用处。)我已经查看了关于这个问题的 Apple 文档,似乎没有任何具体的方向。
或者,有关如何解决此问题的任何线索?标头包括这一位:
#if __has_feature(modules)
@import UIKit;
@import Material;
@import CoreGraphics;
@import ObjectiveC;
#endif
Run Code Online (Sandbox Code Playgroud)
看起来它应该正确引用超类(在这种情况下,如果重要的话,Material.PresenterCard)但是 - 我很确定这个预编译器指令没有被引用,因为我听说过一个相关的错误。
我最近遇到了一个非常类似的问题,并通过为模块不可用的情况定义一个空的 Objective-C 类来解决它。
我的情况是应用程序 - >框架 - >包(Swift包)
Framework实现了DerivedClass,它的子类BaseClass定义在Package
在任何 Objective-C++ 代码中内部或外部导入时Framework-Swift.h,编译器会抱怨BaseClass在生成的标头中找不到
我通过将以下代码添加到框架的伞包含(Framework.h)中解决了这个问题:
#if !__has_feature(modules)
@interface BaseClass: NSObject
@end
#endif
Run Code Online (Sandbox Code Playgroud)
因此,当模块不可用时(Objective-C++),BaseClass 被定义为空的 Objective-C 类。这允许将框架导入到 Objective-C++ 代码中以使用框架的其他功能
| 归档时间: |
|
| 查看次数: |
359 次 |
| 最近记录: |