> On 22 May 2015, at 9:51 pm, Jonathan Taylor <jonathan.tay...@glasgow.ac.uk> 
> wrote:
> 
> I’m trying to think if there is an elegant way of handling the situation I 
> find in some of my display code. I have a class which inherits from NSView 
> and which overrides drawRect. The class has a number of properties, and if 
> they change then the view needs redrawing. At present I have custom setters 
> that call through to setNeedsDisplay:YES. This results in quite a lot of code 
> bloat (since I would otherwise just @synthesize the properties and be done 
> with it).


My advice is: forget it. What you’re doing is fine, and it’s the normal way to 
make views repaint when a property changes. It’s not code ‘bloat’ either - 
@synthesize produces code just as if you’d written it yourself. Any other way 
than simply adding a call to -setNeedsDisplay: is MORE code than that. View 
properties can’t be usefully atomic either, so that isn’t going to matter.

Really, you are trying to save yourself a tiny bit of extra work by making 
things far more complicated than necessary. Remember, it wasn’t very long ago 
that all properties had to be implemented by hand. How we used to spend many a 
happy hour writing endless getters and setters!

What would be quite nice (though maybe too much of a special case and very 
unlikely to happen) is a qualifier for properties that would add the 
-setNeedsDisplay: automatically as part of the @synthesize, but I doubt that 
will ever happen because it a) only pertains to views b) might not be optimal 
for some situations, where only part of the view needs updating, and c) made 
somewhat redundant by layers, which have a flag that causes a redisplay on a 
property change.

—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/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to