Re: NSDocument and KVO compliance
Re: NSDocument and KVO compliance
- Subject: Re: NSDocument and KVO compliance
- From: Seth Willits <email@hidden>
- Date: Sun, 20 Oct 2013 22:01:59 -0700
On Oct 19, 2013, at 9:27 AM, Jerry Krinock wrote:
>> I don't know if this is a common technique but I use it regularly to track binding changes.
>>
>> - (void)setValue:(id)value forKeyPath:(NSString *)keyPath
>> {
>> // all bindings that reference self (such as self.representedObject.xxx)
>> // will pass through this method
>> if ([keyPath rangeOfString:@"self.representedObject."].location != NSNotFound) {
>> [self.document updateChangeCount:NSChangeDone];
>> }
>> [super setValue:value forKeyPath:keyPath];
>> }
>
> That's interesting and I've never seen it done.
>
> I'd call it a variation of writing custom accessors for each attribute. Custom accessors for each attribute have the advantage of reliably catching all model changes, not just those driven by Cocoa Bindings. But your technique is way less code, by a factor of the number of attributes, and requires zero maintenance.
I've done it / do it in one particular project in one spot out of notable convenience. It works, but only for modifications using KVC, and I do recall having at least one bug where a modification wasn't using KVC and wasn't triggering the code I was expecting it to.
I gag a little whenever I remember that's how it works, but at this point it ain't broke so I'm not going to tempt fate by fixing it. ;-)
--
Seth Willits
_______________________________________________
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