iOS - 管理IBOutlets内存的最佳方法是什么?

Veg*_*ega 10 iphone interface-builder iboutlet ios

我一直在审查Apple文档和示例代码,以尝试确定管理IBOutlet内存的最佳方法.至少可以说,我有点困惑.

CurrentAddress示例代码将IBOutlets声明为属性:

@interface MapViewController : UIViewController <MKMapViewDelegate, MKReverseGeocoderDelegate>

{
    MKMapView *mapView;
    UIBarButtonItem *getAddressButton;
}
@property (nonatomic, retain) IBOutlet MKMapView *mapView;
@property (nonatomic, retain) IBOutlet UIBarButtonItem *getAddressButton;
Run Code Online (Sandbox Code Playgroud)

大.这些是在dealloc中发布的:

- (void)dealloc
{
    [mapView release];
    [getAddressButton release];
    [super dealloc];
}
Run Code Online (Sandbox Code Playgroud)

现在不应该将这些属性设置为分配?因为当设置为retain时,IBOutlet的保留计数将增加两次:一次加载nib时和另一次设置属性时?将这些属性设置为nil而不是在dealloc中释放不是更好吗?

Jil*_*ouc 7

Apple文档说我们应该保留iOS的属性.
保留的出口应该被释放,并nil在两者deallocviewDidUnload.

在Mac上,加载笔尖时,每个未由superview保留的插座会自动保留.iOS的情况并非如此.这就是为什么理论上只保留视图层次结构中视图以外的出口的原因.

Jeff LaMarche就这一主题发表了一篇非常有用的文章:Outlets,Cocoa vs. Cocoa Touch.