微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Xcode 在加载框架时找不到桥接头

如何解决Xcode 在加载框架时找不到桥接头

我正在创建一个框架(编译库),它同时包含 Swift 和 Objective C 代码,因此我在我的框架项目中创建了一个桥接头。 框架构建良好,桥接标头没有问题。

但是,当我将产品 .sdk 拖入我的演示项目以测试导入框架时,出现错误

Failed to import bridging header "...LibraryName-Bridging-Header.h"

我在没有任何运气的情况下向搜索路径添加了多个路径。

解决方法

混合了 Swift 和 Objective-C 代码的框架不需要(也不应该有)桥接头。

首先确保您的框架的构建设置包括“定义模块:是”。

那么,你的框架应该已经有一个伞头标头,这是与你的框架同名的标头,里面有这样的东西

//! Project version number for MyFramework.
FOUNDATION_EXPORT double MyFrameworkVersionNumber;

//! Project version string for MyFramework.
FOUNDATION_EXPORT const unsigned char MyFrameworkVersionString[];

任何您希望对 Swift 可见的 Objective-C 内容都需要一个具有公共成员资格的标头,该标头像 #import <MyFramework/MyHeaderName.h> 一样被导入到伞形标头中。请注意,您需要递归地应用此规则:如果您在伞头中导入一个 Objective-C 头,it 导入的任何内容也需要是公开的并且在伞头中。

如果您的某些 Objective-C 标头具有不必要的导入,或者导入您不想在框架中公开的内容,这可能会有点棘手。您可能需要对代码进行一些重构,以便明确区分公共标头和私有标头。

如果这样做,所有公开的 Objective-C 代码应该可以自动在框架的 Swift 代码中使用,而无需任何桥接头。

此处的官方文档:https://developer.apple.com/documentation/swift/imported_c_and_objective-c_apis/importing_objective-c_into_swift

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。