objective-c - KVO 做这些完全一样的事情吗?
问题描述
这些做同样的事情,如果不是,究竟有什么区别?
[self addObserver:self forKeyPath:@"user.name" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld) context:SomeContext];
和
[self.user addObserver:self forKeyPath:@"name" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld) context:SomeContext];
解决方案
他们做的事情略有不同。前者观察关键路径"user.name"
的self
含义,即如果其中一个user
或该用户的name
更改将触发。后者观察到"name"
的self.user
意思是它只会name
在该用户发生变化时触发。
推荐阅读
- xamarin - Xamarin 表单列表视图“null”
- mysql - 为什么 set uuid = (select uuid()); mysql 中的更新不适用于此查询?
- r - 修正标准误,当第二阶段是托比特回归时
- list - 在保持顺序的同时拆分列表中的项目
- r - 删除从 NA 因子派生的 facet_grid 面板
- javascript - 如何防止在 Chrome 扩展中的内容脚本元素 onclick() 中进一步执行鼠标单击?
- javascript - 无法在 React 中映射数组
- python - 使用 Python、Windows 10 更改麦克风音量
- python - SpeechRecognition 热词无法正常工作
- amazon-web-services - 使用 EMR 将数据从 S3 加载到 Redshift