title: In Objective-C, if @property and @synthesize will add getter and setter, why not just make an instance variable public?
body: <p>In Objective-C, we can add <code>@property</code> and <code>@synthesize</code> to create a property -- like an instance variable with getter and setter which are public to the users of this class.</p>
  
  <p>In this case, isn't it just the same as declaring an instance variable and making it public?  Then there won't be the overhead of calling the getter and setter as methods.  There might be a chance that we might put in validation for the setter, such as limiting a number to be between 0 and 100, but other than that, won't a public instance variable just achieve the same thing, and faster?</p>