ARCでシングルトンの共有インスタンスアクセサーでdispatch_onceを使用する正確な理由は何ですか?
+ (MyClass *)sharedInstance
{
// Static local predicate must be initialized to 0
static MyClass *sharedInstance = nil;
static dispatch_once_t onceToken = 0;
dispatch_once(&onceToken, ^{
sharedInstance = [[MyClass alloc] init];
// Do any other initialisation stuff here
});
return sharedInstance;
}
バックグラウンドで非同期にシングルトンをインスタンス化することは悪い考えではありませんか?つまり、その共有インスタンスを要求してすぐにそれに依存しているのに、dispatch_onceがクリスマスまで私のオブジェクトを作成するとしたらどうなるでしょうか。すぐ戻りませんよね?少なくともそれがグランドセントラルディスパッチの要点のようです。
なぜ彼らはこれをしているのですか?
Note: static and global variables default to zero.