我的 swift 静态框架在带有 iphone 模拟器的 OC 文件中不起作用
My swift static framework is doesn't work in OC file with iphone simulator
我做了一个混合Swift和OC的静态框架,它包括架构:"armv7 i386 x86_64 arm64"。
它还包括所有 .swift 模块文件:
它适用于真实设备或在真实设备和模拟器的 swift 文件中。
但是 只有 当我在 Objective-C 文件中使用框架的 swift class 并且目标设备是 iphone 模拟器时,它会给我一个错误:
BaseNavigationController(写在swift),BaseViewController(写在OC)是我的框架class,只有swift class不行, BaseNavigationController 是 UINavigationController 的子class,具有 'open' 级别的访问控制,框架 '-Swift.h' 文件已生成 oc 接口。
为什么会报错?我仔细检查了我的项目,没有发现异常。
我的xcode版本是:版本11.5(11E608c),项目build_setting的swift版本是5.0.
这里的问题很可能是在使用的构建脚本中。
这里的问题可能是在使用 lipo 合并为设备(armv7
& arm64
架构)和模拟器(i386
、x86_64
)架构构建的框架后,您还应该将为模拟器生成的 BaseCore-Swift.h
的内容复制到为 armv7
& arm64
架构.
生成的内容
Objective-C 需要在 BaseCore-Swift.h
文件中为 i386 和 x86_64 体系结构定义符号,以便 Swift 类 工作。执行构建后,可以在 Headers 文件夹中找到该文件。
如果您有构建脚本,您可以简单地使用 cat
命令在构建脚本中执行此复制。
这里的问题不是不包含模拟器的体系结构,而是模拟器体系结构的 BaseCore-Swift.h
文件中没有定义符号,因此 Objective-C 可以选择它们。
请随时发表评论或提出其他问题。
如果以上操作解决了您的问题,请将其标记为已接受:)
我做了一个混合Swift和OC的静态框架,它包括架构:"armv7 i386 x86_64 arm64"。
它还包括所有 .swift 模块文件:
它适用于真实设备或在真实设备和模拟器的 swift 文件中。
但是 只有 当我在 Objective-C 文件中使用框架的 swift class 并且目标设备是 iphone 模拟器时,它会给我一个错误:
BaseNavigationController(写在swift),BaseViewController(写在OC)是我的框架class,只有swift class不行, BaseNavigationController 是 UINavigationController 的子class,具有 'open' 级别的访问控制,框架 '-Swift.h' 文件已生成 oc 接口。
为什么会报错?我仔细检查了我的项目,没有发现异常。
我的xcode版本是:版本11.5(11E608c),项目build_setting的swift版本是5.0.
这里的问题很可能是在使用的构建脚本中。
这里的问题可能是在使用 lipo 合并为设备(armv7
& arm64
架构)和模拟器(i386
、x86_64
)架构构建的框架后,您还应该将为模拟器生成的 BaseCore-Swift.h
的内容复制到为 armv7
& arm64
架构.
Objective-C 需要在 BaseCore-Swift.h
文件中为 i386 和 x86_64 体系结构定义符号,以便 Swift 类 工作。执行构建后,可以在 Headers 文件夹中找到该文件。
如果您有构建脚本,您可以简单地使用 cat
命令在构建脚本中执行此复制。
这里的问题不是不包含模拟器的体系结构,而是模拟器体系结构的 BaseCore-Swift.h
文件中没有定义符号,因此 Objective-C 可以选择它们。
请随时发表评论或提出其他问题。
如果以上操作解决了您的问题,请将其标记为已接受:)