问题描述
发布iOS 14 beta 5后,我开始崩溃了,经典的Cannot remove an observer <XYZBinding 0x600000d6b750> for the key path "state" from <XYZEntryChat 0x7f960a77a900> because it is not registered as an observer.
。
但是,代码库中没有任何变化可以证明这一点,确实崩溃的代码已经有好几个月没有变化了。即使在官方的iOS 14版本中,崩溃仍然持续。
我调查并偶然发现,XYZEntryChat中的observationInfo
对象应保存有关已注册观察者的信息,该对象在创建后便被释放,而无需我们的任何干预。
还有一次偶然的机会,我发现覆盖XYZEntryChat类中的- (void)setObservationInfo:(void *)observationInfo
方法或observationInfo
getter不再发生此问题。
在许多使用相同基本代码处理绑定的其他类中,不会发生此问题。
对于这种情况的发生,我没有进一步的线索,可能是iOS 14的错误或iOS 14上的某些行为更改,发现应用程序中的使用流程错误。我还研究了它是否与Objective-C / Swift互操作性有关,但是其他也使用/由Swift使用的类都没有问题。
有没有人遇到过这种行为或对根本原因有任何想法?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)