3

私の質問はばかげているかもしれませんが、私はこれを理解できません。このコードを使用してシングルトンクラスを作成します。

+ (GameRequestHandler *) sharedInstance
{
    static dispatch_once_t pred;
    static GameRequestHandler *shared = nil;

    dispatch_once(&pred, ^{
        shared = [[GameRequestHandler alloc] init];
    });
    return shared;
}

このシングルトンオブジェクトからメソッドを呼び出すとき、それらはメインスレッドで呼び出されますか、それともバックグラウンドスレッドで呼び出されますか?

4

2 に答える 2

7

メソッドは、呼び出し元のスレッドで呼び出されます。

dispatch_once渡されたブロックがアプリケーションの存続期間中に一度だけ実行されるようにするだけです。スレッドを使用しているとは思いません。使用している場合、それは心配する必要のない実装の詳細です。

于 2012-05-18T10:44:59.450 に答える