Très souvent, je rencontre un scénario quand je veux observer les changements sur une propriété retenue:Existe-t-il une bonne façon de configurer KVO sur les propriétés conservées?
@interface AnObserver {…}
@property(retain) Foo *foo;
Maintenant, quand je veux mettre en place l'observation, je dois écrire mon propre compositeur, répétant tout le code setter boilerplate :
- (void) setFoo: (Foo*) newFoo {
if (newFoo == foo)
return;
[foo removeObserver:self forKeyPath:…];
[foo release], foo = [newFoo retain];
[foo addObserver:self forKeyPath:…];
}
C'est stupide, car elle pollue la source avec le code et boilerplate il est facile de manquer quelque chose. Existe-t-il une meilleure façon de configurer le KVO sur les propriétés conservées? Je voudrais pouvoir écrire quelque chose comme Mooseafter
crochet pour changer le KVO après que la propriété a été changée.
En fait, je compris que je pouvais regarder le bien immobilier:
[self addObserver:self forKeyPath:@"foo"…];
Et puis modifiez le KVO lorsque la propriété change :-), mais je réalise ce qui est beaucoup plus compliqué que le compositeur écrit à la main J'aimerais éviter.
Des idées?
Cela semble fonctionner, merci! – zoul