主线程上的单例类 - iPhone

时间:2012-05-18 10:39:13

标签: iphone objective-c cocoa singleton

我的问题可能很愚蠢,但我无法理解。我使用这段代码创建了一个单例类。

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

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

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

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:0)

如果您需要在主线程上进行调用,请使用此选项;

type Foo struct { ... }

func NewFooFromProto(f *myproto.Foo) *Foo { ... }

func (f *Foo) ToProto() *myproto.Foo { ... }