Cocoa 绑定,我应该只使用 KVO 吗?
Cocoa Bindings, should I just be using KVO instead?
[self.toolController bind:@"fillColor" toObject:self.fillColorWell withKeyPath:@"color" options:kvoDict];
对比
[self.fillColorWell addObserver:self.toolController forKeyPath:@"color" options:NSKeyValueObservingOptionNew context:nil];
在我的 toolController
class 中,在 -observeValueForKeyPath:...
的实现中
if( [keyPath isEqual:@"color"] ) {
self.fillColor = [object selectedObject];
}
为什么我会选择一种方法而不是另一种方法来让视图更新到我的模型属性?
对于绑定,您唯一需要编写的代码就是绑定本身,仅此而已。使用 KVO,您将不得不编写代码来处理通知。如果您绑定 UI 并使用 Interface Builder,那么您根本不需要任何代码,这对于更简单的事情很有用/可以节省时间+您不必编写通用的样板代码来保存东西是您要响应 KVO 通知的同步。
我读过其他内容,但据我了解(我做了一个快速的新项目来验证这一点)绑定是双向的。所以说如果你将一个文本字段绑定到一个 NSString,当文本字段更新时变量会改变,你可以更改变量和文本字段更新。 KVO 只会在您指定更新的对象上通知您。
有人说绑定不好,他们不属于 iOS 等等,但它们适用于简单的情况,所以也许你应该继续使用绑定,直到你找到案例他们不合适的地方。但是话虽如此,如果您想在某个时候将代码移交给 iOS...
希望这对你来说是一个足够好的答案:)
[self.toolController bind:@"fillColor" toObject:self.fillColorWell withKeyPath:@"color" options:kvoDict];
对比
[self.fillColorWell addObserver:self.toolController forKeyPath:@"color" options:NSKeyValueObservingOptionNew context:nil];
在我的 toolController
class 中,在 -observeValueForKeyPath:...
if( [keyPath isEqual:@"color"] ) {
self.fillColor = [object selectedObject];
}
为什么我会选择一种方法而不是另一种方法来让视图更新到我的模型属性?
对于绑定,您唯一需要编写的代码就是绑定本身,仅此而已。使用 KVO,您将不得不编写代码来处理通知。如果您绑定 UI 并使用 Interface Builder,那么您根本不需要任何代码,这对于更简单的事情很有用/可以节省时间+您不必编写通用的样板代码来保存东西是您要响应 KVO 通知的同步。
我读过其他内容,但据我了解(我做了一个快速的新项目来验证这一点)绑定是双向的。所以说如果你将一个文本字段绑定到一个 NSString,当文本字段更新时变量会改变,你可以更改变量和文本字段更新。 KVO 只会在您指定更新的对象上通知您。
有人说绑定不好,他们不属于 iOS 等等,但它们适用于简单的情况,所以也许你应该继续使用绑定,直到你找到案例他们不合适的地方。但是话虽如此,如果您想在某个时候将代码移交给 iOS...
希望这对你来说是一个足够好的答案:)