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中释放不是更好吗?
Apple文档说我们应该保留iOS的属性.
保留的出口应该被释放,并nil在两者dealloc和viewDidUnload.
在Mac上,加载笔尖时,每个未由superview保留的插座会自动保留.iOS的情况并非如此.这就是为什么理论上只保留视图层次结构中视图以外的出口的原因.
Jeff LaMarche就这一主题发表了一篇非常有用的文章:Outlets,Cocoa vs. Cocoa Touch.