单例类在主线程上 - iPhone

3

我的问题可能很傻,但我无法理解这一点。我使用以下代码创建一个单例类。

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

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

当我从此单例对象调用方法时,它们是在主线程还是后台线程上调用的?
2个回答

7

这些方法是在调用它们的线程上被调用。

dispatch_once 只确保所传递的块只在应用程序生命周期内执行一次。我认为它不使用线程,如果它使用了,那就是一个你不需要担心的实现细节。


0
如果你需要在主线程上调用,请使用以下代码;
dispatch_once(&pred, ^{
        dispatch_async(dispatch_get_main_queue(), ^{
                    shared = [[GameRequestHandler alloc] init];
        });
    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接