首頁  >  問答  >  主體

objective-c - 關於getter方法中使用self引發死循環的問題?

  1. 屬性:
    @property (strong, nonatomic) NSArray *dataArr;

  2. 重寫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麼?

有點混亂, 求解答...

仅有的幸福仅有的幸福2751 天前654

全部回覆(1)我來回復

  • 高洛峰

    高洛峰2017-05-02 09:31:01

    。 。 。
    大括號裡面self.dataArr = @[]只會調同setter 所以沒問題,但是return self.dataArr; 是會調用的getter的,造成死循環
    你可以自己log或者打斷點跟踪下就知道了
    適合的教程

    回覆
    0
  • 取消回覆