我一直在查看 Apple 文档和示例代码,试图确定管理 IBOutlets 内存的最佳方式。我有点困惑,至少可以这么说。
CurrentAddress 示例代码将 IBOutlets 声明为属性:
@interface MapViewController : UIViewController <MKMapViewDelegate, MKReverseGeocoderDelegate>
{
MKMapView *mapView;
UIBarButtonItem *getAddressButton;
}
@property (nonatomic, retain) IBOutlet MKMapView *mapView;
@property (nonatomic, retain) IBOutlet UIBarButtonItem *getAddressButton;
伟大的。这些在 dealloc 中发布:
- (void)dealloc
{
[mapView release];
[getAddressButton release];
[super dealloc];
}
现在不应该将这些属性设置为分配吗?因为当设置为retain时,IBOutlet的retain count会增加两次:一次是加载nib的时候,另一次是设置属性的时候?将这些属性设置为 nil 而不是在 dealloc 中释放不是更好吗?