Is it necessory to define property for an IBOutlet field?
<p>I have seen many iPhone examples to use IBOutlet as a field linked to a UI control in Interface Builder, and the field is also defined as property in the interface class. For example, the following codes are similar ones from Apple example codes:</p>

<pre><code>// in .h file
@interface MyViewController : UIViewController {
  IBOutlet UILabel* _firstName;
  IBOutlet UILabel* _lastName;
  ...
}

@property (nonatomic, retain) UILabel* firstName;
@property (nonatomic, retain) UILabel* lastName;
...
@end

// in .m file
@implementation MyViewController {
@synthetic firstName = _firstName;
@synthetic lastName = _lastName;
...
@end
</code></pre>

<p>I tried to link labels in Interface Builder to my controller class IBOutlets and I can see _firstName and _lastName. Since the linkage is directly from Interface Builder to my interface class members (even private ones if I place @private directive). Do I need to define properties for those fields?</p>

<p>Actually, I tried to remove these properties and it seems my codes work fine. By defining properties, my class expose them as public. I don't have any usage or reason for them as properties within or out side my codes. My question is that if this practice, defining fields as properties, necessary? Do I miss any thing such as memory management which might be called from Objective-C concept or framework?</p>
