Re: adding something to a setter
Re: adding something to a setter
- Subject: Re: adding something to a setter
- From: Stephan Michels <email@hidden>
- Date: Thu, 06 Oct 2011 14:47:12 +0200
I use KVO to execute custom code if a property has changed.
[self addObserver:self forKeyPath:@"graphics" options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld) context:self];
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if (context != self) {
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}
if ([keyPath isEqualToString:@"graphics"]) {
[self setNeedsDisplay:YES];
}
}
AFAIK the observe method will not be executed instantaneously, but on the other side setNeedsDisplay has also a
deferred execution.
Stephan.
Am 06.10.2011 um 13:28 schrieb Torsten Curdt:
> The property syntax is great until you need one more thing.
>
> Think of a NSView and that view displays a value.
>
> @synthesize value;
>
> Now you also want to setNeedsDisplay: when a new value is set. So one
> can override the setter.
>
> - (void)setValue:(NSString*)theValue
> {
> ...
> [self setNeedsDisplay:YES];
> }
>
> but - you would have to implement the setter yourself. No big deal -
> but... it sucks.
> Is there a way to forward the setting to the originally synthesized
> setter? Super cannot be it.
>
> Of course one could add another selector that to the interface
>
> - (void) setValueAndUpdateDisplay:(NSString*)theValue
> {
> self.value = theValue;
> [self setNeedsDisplay:YES];
> }
>
> ...but that sucks, too.
>
> There gotta be a better way!
> How do you deal with this?
_______________________________________________
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