> On 19 Nov 2015, at 08:15, Quincey Morris > <quinceymor...@rivergatesoftware.com> wrote: > > On Nov 18, 2015, at 14:35 , Graham Cox <graham....@bigpond.com> wrote: >> >> it’s just that if other code changes the attributes dictionary (such as the >> Font Manager) then I need these split out properties to trigger their >> notifications so that the UI shows the change > > I think I understand, finally. No, what you’re doing won’t work. > > The problem is that if (say) the Font Manager has a pointer to your > NSMutableDictionary object, and mutates it — sets a new value for a key — > there *will* be a KVO notification** — I believe we know that the standard > NSMutableDictionary class issues KVO notifications for value changes, though > I’m not sure whether it’s documented — but it won’t be a notification for the > dictionary***, it will be a notification for the individual key. >
I didn’t read his original question as saying that however, that he was mutating an individual element of a mutable dictionary property. Grabbing what was written > So what I want (expect?) is that is code sets -dictionaryOfThings directly, > an observer of ‘thingy’ will be triggered. Is that right? which when you look at it doesn’t quite make sense, -dictionaryOfThings is a method so you can’t set it so I assumed it meant replacing the whole dictionary like so myObject.dictionaryOfThings = newDictionaryOfNewThings; or calling [ myObject setDictionaryOfThings:newDictionaryOfNewThings ]; then the original dependent KVO code as-written should fire, for every property which has dictionaryOfThings as a dependent key. A bit of clarification about what was meant by ‘code setting -dictionaryOfThings directly’ might help. _______________________________________________ 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