• 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: What's the point of @properties?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: What's the point of @properties?


  • Subject: Re: What's the point of @properties?
  • From: Uli Kusterer <email@hidden>
  • Date: Wed, 22 Sep 2010 15:16:19 +0200

On Sep 19, 2010, at 9:52 PM, Jim Thomason wrote:
> So basically, I get a language built-in version of a macro, and an
> option to use a new syntax that I'm not interested in anyway.
>
> Is there something else I'm not seeing or some other utility to them
> that I don't yet understand?


 One point nobody mentioned so far: You can use different names for your public property (e.g. an IBOutlet) and your internal storage (i.e. the instance variable). I like to avoid name collisions between local variables and instance variables by using an m prefix on instance variables. Using @synthesize cancelButton = mCancelButton;, I can do that.

 Instead of declaring the instance variable as an IBOutlet, I can now declare

@property (retain) IBOutlet NSButton*    cancelButton;

 and IB will call setCancelButton:, not setMCancelButton:, which wasn't possible without properties.

Also, if you are implementing a framework class that is subclassed by the apps linking to your framework, you can keep it binary-stable and avoid "fragile base class"-problems by only having one real ivar that points to a struct containing the actual ivars. Again, you wouldn't be able to do IBOutlets in that case if you didn't have property declarations, even though you'll end up writing the getter and setter manually.

 Apart from that, let me emphasize what others have said:

 It writes getters/setters for you. Every line of code you don't have to write is a line of code you don't have to debug

 And finally: properties contain additional mark-up on a method. A future version of the Clang Static Analyzer could detect violations of thread-safety in your code and similar issues with help from property declarations.

Cheers,
-- Uli Kusterer
"The Witnesses of TeachText are everywhere..."

_______________________________________________

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: 
 >What's the point of @properties? (From: Jim Thomason <email@hidden>)

  • Prev by Date: Re: Efficiently adding a bunch of items to an NSMutableArray
  • Next by Date: Re: Efficiently adding a bunch of items to an NSMutableArray
  • Previous by thread: Re: What's the point of @properties?
  • Next by thread: Re: What's the point of @properties?
  • Index(es):
    • Date
    • Thread