我已经从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;
}
在初始化中:
[self.view addSubviews:self.messageTableView];
在dealloc中:
-(void)dealloc {
_messageTableView = nil;}
在ARC中,是否需要设置属性nil(如果对其进行覆盖)?
不。
只要没有创建保留周期,就不必将变量设置为nil。
但是要想更好地了解为什么作者可能觉得有必要发布tableView
on dealloc
,我将不得不仔细研究一下代码。也许他们觉得tableView
的delegate
还是dataSource
强烈举行,这是不是对的情况下UITableView
,也可以是一个保留循环创建其他地方的代码的类的实现,也可能如此。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句