On Dec 16, 2010, at 7:45 AM, Roland King wrote: > If I have a property foo and it's boolean and has the getter/setter > isFoo/setFoo:, what's the correct key path to observe for KVO, assuming > default automatic KVO generation as provided by NSObject, is it 'foo', or is > it 'isFoo'?
It's "foo". The key is the name of the property. The names of the methods can be derived from the key via a number of templates described in the KVC and KVO documentation. One of them is "is<Key>", which should make it clear that the "is" is not part of the key. > It seemed to me that the method which triggers automatic KVO (setFoo:) only > knows about its own signature and so would send a KVO notification for key > path 'foo'. Well, setFoo: doesn't have to "know" what key to generate a change notification for. Things start at the other end. Something adds a KVO observer to your object using a particular key. The setter to hook into is determined from that key, but there's nothing preventing KVO from remembering the original key from which it derived the setter name. I kind of doubt that it reverse engineers the key from the method name. > However NSOperation (for one) is documented to 'be KVO compliant for the > property isFinished' and indeed you have to observe 'isFinished' if you want > notifications. True. I find this to be an awkward, non-standard aspect of NSOperation (especially since I once re-implemented my own version for Tiger compatibility). NSOperation does not have a "finished" property. It has an "isFinished" property. Of course, it doesn't have any setter for that property, which avoids the weird setIsFinished: method name. It also means it's not a counter-example to your (correct) understanding that your setFoo: method would generate notifications for the "foo" key. > If indeed the default KVO code generates notifications for 'foo' should you, > if you have a boolean property using the 'isXXX' syntax, avoid default KVO > and trigger your own property changes for isXXX? No. There's no need to disable KVO's automatic notifications for this case, and you don't want the notifications to go out under key "isXXX". Regards, Ken _______________________________________________ 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com