0
很多时候我遇到的情景时,我想观察一个保留的性质变化:有没有一种很好的方式来设置保留属性的KVO?
@interface AnObserver {…}
@property(retain) Foo *foo;
现在,当我想设置的观察,我需要写我自己的二传手,重复所有的样板二传手码:
- (void) setFoo: (Foo*) newFoo {
if (newFoo == foo)
return;
[foo removeObserver:self forKeyPath:…];
[foo release], foo = [newFoo retain];
[foo addObserver:self forKeyPath:…];
}
这是愚蠢的,因为它污染了样板代码的来源,很容易漏掉一些东西。有没有更好的方式来设置保留属性的KVO?我希望我可以写下类似Moose的after
挂钩来更改属性更改后的KVO。
事实上,我意识到我可以看物业本身:
[self addObserver:self forKeyPath:@"foo"…];
,然后更改志愿时的财产变化:-),但我不知道这是要比手写的制定者更复杂我想避免。
想法?
这似乎工作,谢谢! – zoul 2010-09-28 05:39:53