2017-02-27 6 views
-1
+ (instancetype)sharedInstance 
{ 
    static MyClass *sharedInstance = nil; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     sharedInstance = [[MyClass alloc] init]; 
     // Do any other initialisation stuff here 
    }); 
    return sharedInstance; 

}私はObjective-Cシングルトンパターンを実装する際に混乱しますか?上記のコードで

たびに、我々はメソッドを呼び出したときにオフコース私たちは同じアドレスを取得します。しかし、私の質問は、上記のメソッドが2回目に呼び出されたときに、sharedInstanceオブジェクトにnilを割り当てるのはなぜですか? (static MyClass * sharedInstance = nil;)それはどのように前のアドレスだけを返しますか??それは愚かな質問かもしれないが、私は混乱している、いずれか1つを説明してください

答えて

0

これは静的変数として宣言されています。静的変数はメモリを1回だけ取得します。これは、上記のメソッドを呼び出すたびに同じアドレスを返す理由です。

そして、dispatch_onceは、アプリケーションの存続期間中にブロックを1回だけ実行します。

+0

ありがとう@Dhivya –

関連する問題