1

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 を指しません。ここで何が起こっているのか誰か説明してもらえますか?

4

1 に答える 1