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