Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 我的swift静态框架是dons';t使用iphone模拟器在OC文件中工作_Ios_Swift_Static_Frameworks - Fatal编程技术网

Ios 我的swift静态框架是dons';t使用iphone模拟器在OC文件中工作

Ios 我的swift静态框架是dons';t使用iphone模拟器在OC文件中工作,ios,swift,static,frameworks,Ios,Swift,Static,Frameworks,我制作了一个混合了Swift和OC的静态框架,它包括架构:“armv7 i386 x86_64 arm64”。 它还包括所有.swiftmodule文件: 它与真实设备或真实设备和模拟器的swift文件配合良好 但是仅当我在Objective-C文件中使用framework的swift类,并且目标设备是iphone模拟器时,它会给我一个错误: BaseNavigationController(以swift编写)、BaseViewController(以OC编写)是我的框架类,只有swift

我制作了一个混合了Swift和OC的静态框架,它包括架构:“armv7 i386 x86_64 arm64”。

它还包括所有.swiftmodule文件:

它与真实设备或真实设备和模拟器的swift文件配合良好

但是仅当我在Objective-C文件中使用framework的swift类,并且目标设备是iphone模拟器时,它会给我一个错误:

BaseNavigationController(以swift编写)、BaseViewController(以OC编写)是我的框架类,只有swift类不工作,BaseNavigationController是具有“开放”级访问控制的UINavigationController的子类,framework'-swift.h'文件生成了OC接口

为什么它会报告错误?我仔细检查了我的项目,但没有发现异常


我的xcode版本是:11.5版(11E608c),而project build\u设置的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”文件上方有一行代码:
(如果0)elif defined(u arm64_uuuuuu)和&&uu arm64_uuu
。嘿,兄弟,你在哪个文档中找到了需要复制
-Swif.h
文件的描述,还是官方提供了创建Swift静态库的完整文档?