我的问题可能很愚蠢,但我无法理解。我使用这段代码创建了一个单例类。
+ (GameRequestHandler *) sharedInstance
{
static dispatch_once_t pred;
static GameRequestHandler *shared = nil;
dispatch_once(&pred, ^{
shared = [[GameRequestHandler alloc] init];
});
return shared;
}
当我从这个单例对象调用方法时,是在主线程还是在后台线程中调用它们?
答案 0 :(得分:7)
在您调用它们的线程上调用这些方法。
dispatch_once
只确保传递给它的块仅在应用程序的生命周期中执行一次。我不认为它使用线程,如果确实如此,那么这是一个你不需要担心的实现细节。
答案 1 :(得分:0)
如果您需要在主线程上进行调用,请使用此选项;
type Foo struct { ... }
func NewFooFromProto(f *myproto.Foo) *Foo { ... }
func (f *Foo) ToProto() *myproto.Foo { ... }