开发者社区> 问答> 正文

哪些情况下使用kvo会崩溃,怎么防护崩溃

哪些情况下使用kvo会崩溃,怎么防护崩溃

展开
收起
montos 2020-04-13 20:51:43 2095 0
1 条回答
写回答
取消 提交回答
    • removeObserver一个未注册的keyPath,导致错误:Cannot remove an observer A for the key path "str",because it is not registered as an observer. 解决办法:根据实际情况,增加一个添加keyPath的标记,在dealloc中根据这个标记,删除观察者。

    • 添加的观察者已经销毁,但是并未移除这个观察者,当下次这个观察的keyPath发生变化时,kvo中的观察者的引用变成了野指针,导致crash。 解决办法:在观察者即将销毁的时候,先移除这个观察者。

    其实还可以将观察者observer委托给另一个类去完成,这个类弱引用被观察者,当这个类销毁的时候,移除观察者对象,参考KVOController

    2020-04-13 20:51:52
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
代码未写,漏洞已出——谈谈设计不当导致的安全问题 立即下载
网络流量异常行为分析系统 立即下载
低代码开发师(初级)实战教程 立即下载

相关实验场景

更多