Objective C でシングルトン デザイン パターンを調べていたとき、多くの人が以下のコードを使用してそれを作成していることに気付きました。
@interface Base : NSObject {}
+(id)instance;
@end
@implementation Base
+(id) instance
{
static id theInstance = nil;
if (theInstance == nil)
{
theInstance = [[self alloc] init];
}
return theInstance;
}
@end
ここでは、静的変数をメソッド内で nil に割り当てる必要がある理由がわかりませんでした。代わりに、メソッドの外部で宣言して nil に割り当てることができます。この +instance() メソッドが呼び出されるたびに、Instance 変数が nil に割り当てられるためです。指していた以前のオブジェクトを失うことはありませんか?
私はそれをデバッグしようとしましたが、驚くべきことに、 +instance() メソッドが呼び出されたときに nil を指しません。ここで何が起こっているのか誰か説明してもらえますか?