我目前有一个具有 15 个属性(并且还在增长)的类,我发现每次这些属性中的一个发生更改时,我都必须调用一个更新方法。
目前,我正在用这样的代码覆盖每个 setter:
-(void)setParameterName:(NSUInteger)newValue {
if (_param == newValue)
return;
_param = newValue;
[self redraw];
}
方法[self redraw];
是这里的关键。
有更好的方法吗?我应该使用 keyValue 观察者(方法observeValue:forKeyPath:ofObject:change:context:
)吗?
笔记:
- 所有属性(到目前为止)都是
assign
(主要是enum
、NSUInteger
和)CGFloat
;BOOL
- 所有这些属性都是使用绑定(方法
bind:toObject:withKeyPath:options:
)设置的。除非从文件系统加载(这并不重要,因为加载完成后我已经在每个对象上调用了绘图方法); - 值更改仅适用于当前对象。当其他对象发生变化时,我不需要被告知;
- 我有其他属性,我不需要观察它的变化(因为它对我的输出没有影响并且绘制输出有点费时)。
谢谢!