我發現自己現在懶惰的初始化我所有的功能。它只是感覺更自然,它允許我停止編寫設置功能。這是設計不好嗎?什麼是陷阱?可以懶惰初始化/加載所有對象嗎?
@property (nonatomic, strong) NSMutableArray *array1;
-(NSMutableArray *)array1{
if (!_array1){
_array1 = [[NSMutableArray alloc] init];
}
return _array1;
}
然後我發現自己做這樣的事情:
-(NSMutableArray *)array1{
if (!_array1){
_array1 = [[NSMutableArray alloc] init];
// read a file
// [_array addObject:newObject];
}
return _array1;
}
沒關係,只要記得在類內部總是調用self.array1,而不是_array1。 –
這樣的形式會使得將值設置爲'nil'(並且在讀取時返回'nil')是不可能的,這有時可能實際上是期望的值。如果它是一個公共API,絕對記錄這種行爲! – Kitsune