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

预定目的地

我已经从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。

但是要想更好地了解为什么作者可能觉得有必要发布tableViewon dealloc,我将不得不仔细研究一下代码。也许他们觉得tableViewdelegate还是dataSource强烈举行,这是不是对的情况下UITableView,也可以是一个保留循环创建其他地方的代码的类的实现,也可能如此。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我应该在构造函数中构建对象吗?

我应该在C ++中删除静态对象吗

释放对象时执行Objective-C方法-我应该解决这个问题吗?

我应该在退出之前释放内存吗?

我应该在C中的basename / dirname之后释放strdup指针吗?

我应该在C#dllimport本机方法调用中为参数释放内存吗?

当我应该在Prolog中使用<-时

当我真的应该在Ruby中的模块curses中调用refresh函数时

即使未添加任何内容,我也应该在子类中覆盖equals和hashCode吗?

我应该在getter方法中快速返回什么

反应:当我使用输入type =“ file'的形式时,应该在propTypes中写什么?

当我使用 realloc 时,我应该在二维数组上使用“free”吗?

服务跟踪器 | 如果出现异常,我们应该在addingService方法中释放服务吗?

创建类时,我们应该在 Ruby 中添加 attr_* 方法吗?

我应该在virtualenv中pip install python吗?

我应该在备份中包含/ dev吗?

我应该在virtualenv中安装python 3吗?

我应该在构造函数中引发异常吗

我应该在Django模型中测试方法吗?

我应该在模型中抛出HttpStatus异常吗?

我应该在onDestroyView中删除OnClickListener吗?

我应该在ActionFilter中测试AdalException吗?

我应该在Java中移位除以2吗?

我应该在redux中存储静态配置吗?

我应该在构造函数中验证参数吗?

我应该在 compoenentDidMount 中设置状态吗?

我应该在websocket中关闭mysql连接吗

我应该在Angular中再次调用ngOnInit()吗?

我应该在Java中嵌套这些类吗?