首页 > 解决方案 > 无法将 .mm 文件访问到 swift4

问题描述

我正在开发一个包含 Objective C、Objective C++ 和 Swift4 类的项目。我正在尝试将 .mm 文件(即 Objective C++ 文件)访问到 swift 类中,但它给了我一个错误并显示它未声明。我在项目中添加了一个桥接头,并在那里导入了 Objective C++ 文件的头。

理解问题的示例:

我有 A.mm 类,其中导入了 B.mm 类。将 A 类添加到桥接头后编译器在 B 类中给出错误。

Bh 中的错误:

在此处输入图像描述

请帮忙

标签: iosswift4objective-c++bridging-header

解决方案


Swift 只能桥接到 C 和 Objective-C。如果您丢失的类在其标头中使用 C++ 类型,Swift 将无法读取该文件并跳过该类。

您能否更改您的 Objective-C++ 类,使其仅在其 .mm 文件中使用 C++ 类型,而不在其 .h 文件中使用?然后它看起来就像一个普通的 Swift 的 Objective-C 类,你应该可以使用它。

或者,您可以创建第二个“在外部”是 ObjC 的类,并在其 .mm 中调用 ObjC++ 类,然后只处理所有调用,将 C++ 数据类型转换为简单的 C 类型或 ObjC 对象。

查看“类扩展”以声明 C++ 属性和实例变量,这些属性和实例变量通常会进入 .mm 文件的标头中。


推荐阅读