当我覆盖getter时,我应该在dealloc中释放对象吗?

时间:2015-09-06 03:21:37

标签: ios

我从github项目中读过一些源代码。该项目使用延迟加载,并覆盖getter以确保保存资源。并在dealloc中释放它。代码如下:

-(XHMessageTableView *)messageTableView {
if (!_messageTableView) {
    _messageTableView = [[XHMessageTableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
    _messageTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    _messageTableView.dataSource = self;
    _messageTableView.delegate = self;
    _messageTableView.separatorColor = [UIColor clearColor];
    _messageTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
}
return _messageTableView;

}

在init中:

[self.view addSubviews:self.messageTableView];

in dealloc:

-(void)dealloc {
_messageTableView = nil;}
ARC中的

,如果覆盖它,是否有必要设置属性为nil?

1 个答案:

答案 0 :(得分:0)

没有。

只要没有创建保留周期,就不需要将变量设置为nil。

然而,为了更好地了解作者为什么觉得有必要在tableView上发布dealloc,我必须仔细研究一下代码。也许他们觉得tableView的{​​{1}}或delegate强烈坚持,dataSource并非如此,但可能是他们班级实施的情况,或者可能在代码中的其他位置创建了保留周期。