title: Does an IBOutlet needs to be a property & synthesized?
body: <p>In most examples I see the following setup of IBOutlets:</p>
  
  <pre><code>
  
  (Example A)
  
  FooController.h:
  
  @interface FooController : UIViewController {
      UILabel *fooLabel;
  }
  
  @property (nonatomic, retain) IBOutlet UILabel *fooLabel;
  
  @end
  
  FooController.m:
  
  @implementation FooController
  
  @synthesize fooLabel;
  
  @end
  
  </code></pre>
  
  <p>But this works also fine (notice: no property and no synthesize):</p>
  
  <pre><code>
  
  (Example B)
  
  FooController.h:
  
  @interface FooController : UIViewController {
      IBOutlet UILabel *fooLabel;
  }
  
  @end
  
  FooController.m:
  
  @implementation FooController
  
  @end
  
  </code></pre>
  
  <p>Are there any downsides of defining IBOutlets as in Example B? Like memory leaks? Seems to work fine and I prefer to not expose the IBOutlets as public properties as they are not used as such, they are only used in the controller implementation. Defining it in three places without a real need does not strike me as very DRY (Don't Repeat Yourself).</p>