[self addObserver:self forKeyPaths:[Foo keyPathsThatAffectDisplay] ...context:SomeUniquePtrValue];
(We have a class addition to NSObject to take an array of keyPaths and lopp through addObserver:forKeyPath: etc, because we use multiple key paths *everywhere*) - (void)observeValueForKeyPath: ... { if (context == SomeUniquePtrValue && [ [Foo keyPathsThatAffectDisplay] containsObject:keyPath]) [self setNeedsDisplay:YES]; etc } > On Feb 2, 2016, at 10:05 PM, Graham Cox <graham....@bigpond.com> wrote: > > Hi all, > > Whenever I make a custom view class, it often has a bunch of properties that > affect the content it renders. So, for each setter that does this, I have to > override the setter, do whatever it normally does plus call > -setNeedsDisplay:YES. > > This gets tedious. > > Is there a good way to automate this for a given set of properties? I > considered overriding -didChangeValueForKey: and checking the key against a > set of exported property names, and that would work, except all my custom > views would then need to subclass this one special kind of view instead of > NSView. Can it be done with a standard NSView? (MacOS) > > A similar requirement applies to CALayer too. > > —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/lrucker%40vmware.com > > This email sent to lruc...@vmware.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