关于 Application circumvented Objective-C runtime dealloc initiation for <%s>

583 阅读1分钟

背景

今天被迫自动更新升级XCode到了14(我就重启了一下机子T_T),然后运行APP直接Crash,精彩。 Crash:

NSException: 'Application circumvented Objective-C runtime dealloc initiation for <UITextField> object

问题原因

崩在了IQKeyboardManager

查了半天资料,从蛛丝马迹外加自己的测试。发现Xcode14中,同时重写UIView极其任意子类+initialize方法会导致闪退。深层原因并没有时间去发掘。

解决办法

把我自己写的UIView的+initialize改成了+load。这种比较父级的类别还是+load了把,新系统的预热机制做得挺好的,可以不必计较这几个+load的开销。

总结

早日换Swift,早登极乐。或者转前端。 iOS开发没人要了