したがって、遅延インスタンス化は広く使用されているようで、誰もが遅延インスタンス化の利点を知っています。
これは疑問につながります: すべてのオブジェクトを遅延インスタンス化する必要がありますか?
私はそれを真剣に疑っています。
問題は、遅延インスタンス化の欠点は何ですか?
(Apple Sample LocateMe) から取得したサンプル:
- (NSDateFormatter *)dateFormatter {
if (dateFormatter == nil) {
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterLongStyle];
}
return dateFormatter;
}
これにより、必要なときにのみこのオブジェクトを初期化できるという利点が得られます。
ちなみに、Apple から取得した上記のサンプルでは、「読み取り専用」オブジェクトを遅延インスタンス化するだけのようです。