iOS开发解决"Application circumvented

2024-09-08  本文已影响0人  为什么划船不靠桨
最近公司接了一个很久之前的旧项目,甲方把工程发过来一编译运行就直接崩溃,控制台打印日志Thread 1: "Application circumvented Objective-C runtime dealloc initiation for <UITabBarButton> object.",但是崩溃分析捕捉不到对应的地方。
后面花了很多时间排查,定位到了是老项目中引入了IQKeyboardManager ,一直没更新导致的,崩溃的根本原因是iOS16 苹果不允许在系统控件分类(Categroy)中重写 + (void)initialize方法,而该库的老版本UIView分类里违背了,代码部分看下面的贴图:
截图.png
1. 最省事的解决方法是IQKeyboardManager到最新版本。
2. 如果要自己动手改代码那需要遵守一个规则:
全局搜索所有的+ (void)initialize方法, 不要在系统控件分类(Categroy)中重写+ (void)initialize方法,如果时间紧可以暂时用+(void)load替换+ (void)initialize方法。

参考自文章

上一篇 下一篇

猜你喜欢

热点阅读