解决OC、Swift混编时,低于iOS13的系统引用SwiftUI库闪退的问题

最近项目需要混编,又引入了SwiftUI,导致在iOS13以下系统直接闪退;
报错:
dyld: Library not loaded:/System/Library/Frameworks/SwiftUI.framework/SwiftUI
Referenced from: /var/containers/Bundle/Application/D80A336C-EE82-4C4B-AF30-7234C6EC4C18/XXXX.app/XXXX
Reason: image not found
原因:SwiftUI库是在iOS13才开始引入的,13以下的系统无SwiftUI库;
目前有两种方案可以解决,但都涉及到写两套UI,即13以上使用SwiftUI写,13以下使用UIKit写;或者在低于13的系统上直接屏蔽这个功能也可以😏。
方案一:
主工程 -> TARGETS -> Build Phases -> Link Binary With Libraries 中添加SwiftUI.framework库,将Status值由Required(默认是这个值)改为Optional;

方案二:
主工程 -> TARGETS -> Build Settings -> Linking - General -> Other Linker Flags中添加-weak_framework SwiftUI

两种方案最终实现原理基本差不多,都是弱引用SwiftUI库,但还是比较推荐方案一。
两种方案都能让代码部署在低于13的系统手机上,但是切记在使用SwiftUI库时,使用@available(iOS 13.0, *)来进行判断,否则还是会崩溃,方案一、方案二都只是解决引入不了库导致的编译错误;13+以上才能使用SwiftUI

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容