title: Declare properties in .h interface or in an extension in .m file?
body: <p>In Objective-C, is it best practice to:  </p>
  
  <ol>
  <li><p>Declare objects such as buttons in the .h and then synthesize in the .m  </p>
  
  <pre><code>.h
  @interface SomeViewController : UIViewController  
    @property (strong, nonatomic) UIButton *someButton;  
  @end
  
  .m
  @implementation SomeViewController  
    @synthesize someButton = _someButton;  
  @end
  </code></pre></li>
  <li><p>or declare them as ivars in the .m  </p>
  
  <pre><code>@interface SomeViewController ()  
    @property (strong, nonatomic) UIButton *someButton;  
  @end  
  </code></pre></li>
  </ol>
  
  <p>I notice that in a lot of Apple code, specifically their Breadcrumbs sample code, many of their properties are declared in the interface. Is there a difference between the two? I also noticed that when properties are declared in the <code>@interface</code>, they are automatically synthesized with an underscore prefix, making the <code>someButton = _someButton</code> synthesis useless.</p>