objective-c - 我现在必须手动删除 KVO 中的观察者吗?
问题描述
我很困惑,我现在必须手动删除 KVO 中的观察者吗?当我在网站上搜索这个问题时,我发现Do I have to removeObserver in KVO手动这个问题。所以我尝试添加 NSKVODeallocateBreak 符号异常。但是当我将观察者设置为nil
没有手动删除观察者时,什么都没有发生。然后我尝试查看调试内存图NSKeyValueObservationInfo
。
此屏幕截图是在添加观察者后捕获的,我尝试更新观察到的属性值以进行测试。
然后我移除观察者。它显示内存中的某些东西消失了。
然后我将观察者设置为零。好像什么都没发生。
之后,我再次初始化观察者,并再次添加观察者。它表明记忆中的某些东西再次出现了。
最后,我只是将观察者设置为 nil(没有 removeObserver)。它似乎与 removeObserver 的结果相同。
那么,KVO 有什么变化吗?还是我的测试不正确?
我的代码粘贴在这里:https ://gist.github.com/kingcos/36575befa94a464d7aff689daa34f5d6
解决方案
推荐阅读
- unreal-engine4 - 如何实现输入移动?
- android - Admob 广告加载失败
- javascript - 为什么 jquery.blockUI 会吞下 onClick 事件?
- ios - iOS 移动应用程序无法识别 SQLiteStudio 中的表更新
- c++ - 如何在 Linux 上检测 CDRom 是否是 DVD
- spring-boot - Spring Boot Java 11 应用程序不会部署在谷歌云中
- unit-testing - 如何为速度模板编写单元测试?
- sql - 条件仅提取过去三个月内某个帐号中某人为某个类别拨打超过 2 次的记录
- android - Android Studio - ndk_build_command 在清理任务上失败
- excel - 在 Python 中迭代两个列表