One possible issues is that `self.thingy=x;` will trigger two change notifications for `thingy`: one for `self.dictionaryOfThings = temp;` (due to keyPathsForValuesAffectingThingy), and one when the setter exits. Depending one what your observer does this may have unforeseen side effects.
A possible workaround would be to replace `self.dictionaryOfThings = temp;` with `_dictionaryOfThings = temp;`. Gerd > > On Nov 17, 2015, at 19:18, Graham Cox <graham....@bigpond.com> wrote: > > I’m using KVO to observe a bunch of properties. > > Most of these properties are split out into simple things that set a single > value, but internal to my object, some end up setting a common dictionary of > attributes, which is also a property. > > I KVO observe both the simple properties and the common dictionary property. > Mostly this is working, but when code directly sets the dictionary property, > the other properties don’t trigger their observers, even though I’m > implementing the +keyPathsForValuesAffecting<property>, which I believe > should cause the additional triggering. Have I understood that right? > > Here’s the kind of code I have: > > > @property (retain) id<NSObject> thingy; > @property (retain) NSDicitonary* dictionaryOfThings; > > @implementation > > - (void) setThingy:(is<NSObject> thing > { > NSMutableDictionary* temp = [self.dictionaryOfThings mutableCopy]; > [temp setObject:thing forKey:kThingKey]; > self.dictionaryOfThings = temp; > } > > - (id<NSObject>) thingy > { > return [self.dictionaryOfThings objectForKey:kThingKey]; > } > > > + (NSSet*) keyPathsForValuesAffectingThingy > { > return [NSSet setWithObject:@“dictionaryOfThings”]; > } > > > So what I want (expect?) is that is code sets -dictionaryOfThings directly, > an observer of ‘thingy’ will be triggered. Is that right? > > > —Graham > > > > _______________________________________________ > > Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) > > Please do not post admin requests or moderator comments to the list. > Contact the moderators at cocoa-dev-admins(at)lists.apple.com > > Help/Unsubscribe/Update your Subscription: > https://lists.apple.com/mailman/options/cocoa-dev/gerti-cocoadev%40bitart.com > > This email sent to gerti-cocoa...@bitart.com _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com