• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Bindings - registering change notification for multiple keys
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Bindings - registering change notification for multiple keys


  • Subject: Re: Bindings - registering change notification for multiple keys
  • From: Ken Thomases <email@hidden>
  • Date: Wed, 2 Jul 2008 05:25:08 -0500

On Jul 2, 2008, at 3:16 AM, Ken Thomases wrote:

As a model object, NSMutableDictionary is somewhat problematic. It is only KVO-compliant if it is modified with setValue:forKey:. Any change made via setObject:forKey:, the NSMutableDictionary primitive method, is not broadcast to observers.

There I go again, spreading misinformation. *sigh*

I had thought that most NSMutableDictionary methods were not KVO- compliant, but I just ran some tests. They all are! (At least, on Leopard.)

That said, much of what I had said still applies:

*) Exposing an NSMutableDictionary as part of your model violates encapsulation. Yes, you can get KVO notifications of changes to it, but you can't act as a gatekeeper for such changes.

*) It's not possible to observe an NSMutableDictionary for the addition of new keys. You either have to know the keys in advance or observe the set of keys that the dictionary has at a given point in time.

*) If you want to observe all of the keys of a dictionary, you either have to add the observer for each key individually or wrap the dictionary in a class where you can implement a synthetic property like the "anyPreferences" that I suggested. Put another way, you can't set up dependent keys without a custom class. (Hrmm. A category on NSMutableDictionary could provide a +keyPathsForValuesAffecting<Key> method, but wow is that a bad idea.)

Cheers,
Ken
_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:
This email sent to email@hidden


References: 
 >Bindings - registering change notification for multiple keys (From: dreamcat7 <email@hidden>)
 >Re: Bindings - registering change notification for multiple keys (From: Ken Thomases <email@hidden>)

  • Prev by Date: Re: Date and Time Conversion with TimeZone
  • Next by Date: Re: Bindings - registering change notification for multiple keys
  • Previous by thread: Re: Bindings - registering change notification for multiple keys
  • Next by thread: Re: How to make the FileOwner of a nib file accessible globally in whole project
  • Index(es):
    • Date
    • Thread