所以看起来惰性实例化被广泛使用并且每个人都知道惰性实例化的优点。
这就引出了一个问题:我们应该懒惰地实例化每个对象吗?
我严重怀疑。
那么问题来了,惰性实例化的缺点是什么?
取自(Apple Sample LocateMe)的样本:
- (NSDateFormatter *)dateFormatter {
if (dateFormatter == nil) {
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterLongStyle];
}
return dateFormatter;
}
这将为我们提供仅在需要时初始化此对象的优势。
顺便说一句,上面的示例取自 Apple,似乎他们只是懒惰地实例化“只读”对象。