问题描述
属性: @property (strong, nonatomic) NSArray *dataArr;
重写getter方法 (代码关于懒加载, 不过这个不是重点)
- (NSArray *)dataArr{ //1. 判断是否为空 if(_dataArr == nil){ //不能写self.dataArrself.dataArr = @[ //可以写self.dataArr ......... ]; } return _dataArr; }
我现在知道的东西是, 用self.dataArr会调用该属性的getter方法和setter方法
所以我觉得if小括号里的不能用self.dataArr否则会死循环
但我不知道为什么if大括号里却可以用self.dataArr?
难道是大括号里的是赋值, 就只会调用setter方法?
还有return后面能写self.dataArr么?
有点混乱, 求解答...
问题解答
回答1:。。。大括号里面self.dataArr = @[]只会调同setter 所以没问题,但是return self.dataArr; 是会调用的getter的,造成死循环你可以自己log或者打断点跟踪下就知道了 适合的教程