title: private and public property in objective-C
body: <p>So what is actually the difference between these two versions:</p>
  
  <pre><code>@interface Foo : NSObject
  // A guy walks into a bar.
  @property(nonatomic, copy) NSString *bar;
  @end
  
  // Implementation file
  @interface Foo ()
  @property(nonatomic, retain) NSArray *baz;
  @end
  </code></pre>
  
  <p>and</p>
  
  <pre><code>@interface Foo : NSObject
  // A guy walks into a bar.
  @public
  @property(nonatomic, copy) NSString *bar;
  
  @private
  @property(nonatomic, retain) NSArray *baz;
  @end
  </code></pre>
  
  <p>As far as my understanding goes, putting the @property in the .m basically means that it is private. Correct me if I am wrong? Also which is the best implementation then? Is it just a coding style/practice?</p>