[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 <[email protected]> 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 ([email protected])
>
> 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 [email protected]
_______________________________________________
Cocoa-dev mailing list ([email protected])
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 [email protected]