我看到其他控件的代码和属性具有非属性,保留选项和合成。
它们(控件)何时在viewcontrol的生命周期中分配? 我想知道他们是否需要释放。
以下控件(UIView,UIButton,UILabel)需要发布吗?
@interface TreatDuplicationHold : UIViewController <TransactionManagerDelegate, NWPickerFieldDelegate, SearchCompDelegate, SearchCardReaderDelegate> {
IBOutlet UITableView *_mainTableView;
IBOutlet UIView *_headerHoldView;
IBOutlet UIView *_tranHoldDateView;
IBOutlet UIView *_searchHoldView;
IBOutlet UIView *_detailHoldView;
IBOutlet UIView *_resultHoldView;
IBOutlet UIView *_dateSelectView;
IBOutlet UIDatePicker *_datePicker;
IBOutlet UIButton *_btnAddData;
IBOutlet UILabel *_lblSelectAll;
IBOutlet UILabel *_lblSelectScreen;
IBOutlet UIButton *_btnSelectAll;
IBOutlet UIButton *_btnSelectScreen;
IBOutlet UIButton *_btnRequestHoldFree;
IBOutlet NWPickerField *_bpCompPicker;
}
这是实施。
- (void)dealloc {
[_arrHidData release];
[TRANS release];
[_arrItemList release];
[_arrHidData release];
[_arrCheckBoxValue release];
[_startDate release];
[_endDate release];
// Here release IBOutlet control.
[_tranHoldDateView release];
[_searchHoldView release];
[_detailHoldView release];
[_resultHoldView release];
[_headerHoldView release];
[_mainTableView release];
[_dateSelectView release];
[_datePicker release];
[_bpCompPicker release];
[_btnAddData release];
[_btn_CallAgency release];
[_btn_CallBCCard release];
[_imvSelectAll release];
[_imvSelectScreen release];
[_lblSelectAll release];
[_lblSelectScreen release];
[_btnSelectAll release];
[_btnSelectScreen release];
[_btnRequestHoldFree release];
[super dealloc];
}
答案 0 :(得分:0)
正常的Cocoa内存管理规则适用。
对于接口构建器,使用元数据文件(Interface Builder生成的XML)中的信息将依赖项注入到控制器/视图中。如果您的媒体资源使用的是强大的&#39;},则应调用[instance release]
范围。 (并基于以上两点,他们应该)。
在上面的代码中,您使用的是ivars而不是属性。我不确定这是否可以在手动内存管理下正常工作。但是,如果使用属性而不是ivars,它肯定是正确的。示例:
@property (nonatomic, strong) IBOutlet UIView *headerHoldView;
。 。如果这样做,自动合成的setter将在调用setter时获得所有权。 (它还将释放非零前值的所有权)。因此,这将确保:
令人惊讶的是,ARC可以提供垃圾收集器的90%的好处(唯一的区别是保留周期的特殊处理),但这一切都发生在编译时,这是有效的,因为那里有&如果 是垃圾收集器,那么没有额外的CPU点击或电池消耗。除非您正在研究内存管理(这是一件好事),否则建议使用ARC。在ARC中,它可能主要忘记引用计数,只关注打破任何保留周期。其余部分由编译器处理。