• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: adding something to a setter
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: adding something to a setter


  • Subject: Re: adding something to a setter
  • From: glenn andreas <email@hidden>
  • Date: Thu, 06 Oct 2011 08:29:38 -0500

On Oct 6, 2011, at 6:28 AM, Torsten Curdt wrote:

> 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?


In your .m file, inside either the class extension or an "internal use only" class category, declare:

@property (nonatomic, retain) NSString *sideEffectFreeValue;  // or whatever property specifier were on the original property

and then synthesize it to use the original ivar

@synthesize sideEffectFreeValue=value;

and change your setter to:

- (void) setValue: (NSString *) value
{
	self.sideEffectFreeValue = value;
	[self setNeedDisplay: YES];
}


Glenn Andreas                      email@hidden
The most merciful thing in the world ... is the inability of the human mind to correlate all its contents - HPL

_______________________________________________

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

References: 
 >adding something to a setter (From: Torsten Curdt <email@hidden>)

  • Prev by Date: Re: adding something to a setter
  • Next by Date: Re: adding something to a setter
  • Previous by thread: Re: adding something to a setter
  • Next by thread: Re: adding something to a setter
  • Index(es):
    • Date
    • Thread