主线程上的Singleton类-iPhone

主线程上的Singleton类-iPhone,iphone,objective-c,cocoa,singleton,Iphone,Objective C,Cocoa,Singleton,我的问题可能很傻,但我不能理解这一点。我使用这段代码创建了一个单例类 + (GameRequestHandler *) sharedInstance { static dispatch_once_t pred; static GameRequestHandler *shared = nil; dispatch_once(&pred, ^{ shared = [[GameRequestHandler alloc] init]; });

我的问题可能很傻,但我不能理解这一点。我使用这段代码创建了一个单例类

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

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

当我从这个单例对象调用方法时,它们是在主线程上调用还是在后台线程中调用?

这些方法是在从中调用它们的线程上调用的


dispatch\u once
只确保传递给它的块在应用程序的生命周期中只执行一次。我不认为它使用线程,如果它使用线程,那么这是一个实现细节,您不需要担心。

如果您需要对主线程进行调用,请使用此

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