问题标签 [key-value-observing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
58829 浏览

objective-c - 我如何判断一个对象是否附加了键值观察器

如果你告诉一个客观的 c 对象 removeObservers:对于一个关键路径并且该关键路径尚未注册,它会破解悲伤。像 -

'不能从中删除关键路径“theKeyPath”的观察者,因为它没有注册为观察者。

有没有办法确定一个对象是否有注册的观察者,所以我可以这样做

0 投票
2 回答
2306 浏览

iphone - iPhone Key-Value Observer:观察者未在 UITableViewController 中注册

各位 iPhone 开发者,您好,

我是一位经验丰富的软件工程师,但对 iPhone 平台不熟悉。我已经成功实现了子类视图控制器,并且可以在视图控制器堆栈上推送和弹出父/子视图。但是,当在子视图控制器中编辑对象时,我在尝试更新视图控制器时遇到了麻烦。经过多次失败的实验后,我发现了键值观察 API,它看起来是执行此操作的完美方法。然后我在我的主/父视图控制器中注册了一个观察者,并且我打算在观察者中重新加载视图。这个想法是,当在子视图控制器中编辑对象时,这将被触发。但是,我认为观察者没有被注册,因为我知道值正在编辑视图控制器中更新(我可以在调试器中看到它),

请帮忙!

代码片段如下。

被观察的物体。我相信这是符合键值的,因为值是在使用 setvalue 消息调用时设置的(请参阅下面的子视图控制器)。

Xh:

米:

主视图控制器.h:

主视图控制器.m:

Child View Controller.m:(这会正确设置子视图控制器中对象中的值)

0 投票
3 回答
1620 浏览

cocoa - NSCountedSet 上的 KVO?

我想监视一个 NSCountedSet 以查看其内容是否发生变化。设置 KVO 似乎可以编译,但没有被触发。第一个问题:你能观察一组吗?如果是这样,那么此消息是否有问题?

如果有帮助,我真的只是想监控集合中的(对象数量)的计数

编辑 - 这是观察者(subViewB):

Edit2 - 将 addObserver 消息从 subView 移动到 viewController。所以我试图让一个 subView 观察另一个 viewController 的 subViews 中的 NSCountedSet。关键路径是“相对于接收者”——我假设它是 subViewA。

0 投票
1 回答
9780 浏览

objective-c - 来自 observeValueForKeyPath:ofObject:change:context 的参数:

我想知道这个方法的参数会返回什么。

文档中它说

keyPath键路径,相对于对象,到已更改的值。

object键路径 keyPath 的源对象。

change一个字典,描述了对相对于对象的键路径 keyPath 处的属性值所做的更改。

context当接收者注册接收键值观察通知时提供的值。

您能否为我解释一下这些参数,因为我发现文档有点难以理解。

0 投票
1 回答
1839 浏览

objective-c - 从 KVO 检索 `change` 字典中的信息

方法

有一个参数change,它是一个字典,其中包含有关值更改性质的信息,我如何找出这本字典中的内容?

0 投票
2 回答
748 浏览

objective-c - 停止循环

0 投票
3 回答
267 浏览

objective-c - 3 个通知而不是 1 个

我正在 Cocoa/Objective-C 中开发简单的 MVC 应用程序。我对通知和 KVO 有一个奇怪的问题(或误解)。

我在 MainMenu.xib 中有 AppController 对象,因此我实现awakeFromNib了注册以NSImageView更改其image属性的方法。我通过以下方式添加self为观察者:

backgroundImageView是一个连接IBOutlet到的。AppControllerNSImageView

在标准observeValueForKeyPath:ofObject:change:context方法中,我只记录收到的通知。

问题是 - 当我更改image值时,NSImageView我收到 3 个通知而不是 1 个。你能帮我解决这个问题吗?也许我忽略了选项或一般注册观察者中的某些内容?

更新backgroundImageViewBackgroundImageView类的实例,它是NSImageView. 我将后者子类化为处理拖放操作作为拖动目的地。当performDragOperation:被调用时(拖动的最后一个“状态”),它会改变image属性的值setImagebetweenwillChangeValueForKeydidChangeValueForKey

0 投票
4 回答
4090 浏览

cocoa - Cocoa Key Value Bindings:Controller Key的各种选项的解释是什么?

当我使用 Interface Builder 将控件绑定到 NSArrayController 时,绑定检查器的“Controller Key”字段下有多种选项。

我了解“arrangedObjects”是什么,并且我半了解什么是“选择”,但我希望看到对所有选项以及何时使用每个选项的非常好的解释。该列表包括:selectionIndexes、selectionIndex、selectedObject、sortDescriptors 等。我一直无法找到对这些选项的很好解释。

我在使用绑定到目标 > 选择的按钮时遇到问题,所以我希望对这些控制器键有更深入的了解可以帮助我调试我的问题。

谢谢!!!

0 投票
1 回答
601 浏览

objective-c - 使用 -setValue:forKey: vs "object.var = ..."

这两行代码的区别在于,第二行是 KVO 兼容的,而第一行不是?

我问的原因是因为我需要更新 500 多个对象的 60 个属性,我不希望 KVO 通知超过少数属性。

我正在为我的 UITableView 使用 NSFecthedResultsController 并且我不想在单元格上触发过多的 setNeedDisplay。

0 投票
4 回答
5068 浏览

objective-c - 观察 Objective-C 中任何类属性的变化

简而言之,有没有办法在 Objective-C 类中的任何属性发生更改时接收一般通知?setProperty:我知道我可以使用 KVO 来监视特定的属性更改,但是每当有任何消息发送到我的班级时,我都需要调用特定的方法。我希望能够接收通用通知,而不用担心特别修改了哪个属性。

如果有助于澄清我为什么要这样做,我正在使用这里找到的一些快速表格滚动代码:http: //blog.atebits.com/2008/12/fast-scrolling-in-tweetie-with-uitableview /

实现这一点的部分过程是,每当修改表视图单元格中的属性时,都[ self setNeedsDisplay ]需要调用。我宁愿不必为了进行此调用而重写类中每个属性的 setter 方法。