背景
今天被迫自动更新升级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开发没人要了