如果您正在使用自定义框架,您需要将其放置在 Xcode 项目下的 Target / General 标签中的“嵌入式二进制文件”部分。
对我来说,简单的 清理 和 重建 就解决了问题。
在升级到macOS 10.15.2 beta(Catalina)之后,出现了这个问题。禁用“线程检测器”解决了这个问题(Xcode 11.2)。现在我不能使用线程检测器,必须等待下一个操作系统更新。
将这个框架加入嵌入式二进制资产列表中解决了这个问题。以下是外部框架在Xcode GUI中设置为嵌入式框架的最终形式(我个人更喜欢视觉面包屑):
苹果是否有意让运行时崩溃以某种方式告诉开发人员不能将非苹果框架作为iOS开发中的简单链接框架使用?我认为更好的方法是提出构建错误并附带一个按钮,上面写着“移动它!”
使用嵌入式二进制文件可使最终用户不必独立添加框架(或者让您通过安装程序完成)。对于iPhone(iOS),这是不可能的,但在macOS上,它是可能的,但速度会很快变慢。
对于最终用户而言,仅需将应用程序拖放到macOS上即可安装,这就是嵌入的好处。嵌入还避免了管理外部版本框架的经典“DLL冲突”问题。(磁盘空间很便宜,但我的客户的时间很珍贵。)
这将生成一个包含更多详细信息的崩溃日志。然后,您可以从Xcode窗口菜单→设备和模拟器→查看设备日志中查看此日志。
问题终于解决了!
将这个框架从“必需的”改为“可选的”,这对我有用。
继续执行以查看调试器是否显示任何消息,例如“未找到MyFramework.framework”。如果是这种情况,请参考此问题:OS X Framework Library not loaded: 'Image not found'。对我来说,Amos Joshua的答案有效。
确保已通过“嵌入式二进制文件”部分添加了二进制文件。
确保在构建阶段中启用了框架签名。
确保嵌入式框架不是符号链接。
您可以在“链接二进制文件”阶段将链接的框架设置为可选项。这将告诉iOS在启动期间不要查找这些框架。但是,无论如何,您都需要修复错误才能使用这些框架!
检查所有info.plist条目是否正确。在我的情况下,我正在为iOS使用Mac info.plist文件。它正在寻找一些在iOS项目中不存在的xib文件。
在进行此类更改后,请执行清理和构建。这是必需的,因为如果这些文件已经存在,Xcode不会复制/更改这些文件。
从iPad中删除该应用程序,然后安装。原因同7。