objective-c - 关于getter方法中使用self引发死循环的问题?
本文介绍了objective-c - 关于getter方法中使用self引发死循环的问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
属性:
@property (strong, nonatomic) NSArray *dataArr;
重写getter方法 (代码关于懒加载, 不过这个不是重点)
- (NSArray *)dataArr{
//1. 判断是否为空
if(_dataArr == nil){ //不能写self.dataArr
self.dataArr = @[ //可以写self.dataArr
.........
];
}
return _dataArr;
}
我现在知道的东西是, 用self.dataArr
会调用该属性的getter方法
和setter方法
所以我觉得if小括号里的不能用self.dataArr
否则会死循环
但我不知道为什么if大括号里却可以用self.dataArr
?
难道是大括号里的是赋值, 就只会调用setter方法
?
还有return后面能写self.dataArr
么?
有点混乱, 求解答...
解决方案
。。。
大括号里面self.dataArr = @[]
只会调同setter 所以没问题,但是return self.dataArr; 是会调用的getter的,造成死循环
你可以自己log或者打断点跟踪下就知道了
适合的教程
这篇关于objective-c - 关于getter方法中使用self引发死循环的问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文