0

在超类中,我定义了一个名为“sharedClient”的方法

+ (id)sharedClient
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        instance = [[self alloc]init];
    });
    return instance;
}

在这种方法下,我想分派一次对象。然后我定义了超类的两个子类。A类和B类。

我希望在我调用A的方法sharedClient之后,有一个A的sharedClient,我已经调用了B的sharedClient,有一个B的对象。但是似乎如果A和B都调用了该方法,那就有始终是之前调用的类的一个对象。</p>

4

1 回答 1

1

dispatch_once就像它的名字所暗示的那样,所以只有一个分配,只有一个分配给实例。这将是首先调用哪个类的一个实例。

如果你真的想要一个单例,那么你可能不想要三个类。也许你想要每个的一个实例?然后每个文件都有一个静态实例变量,每个类都有自己的sharedClient实现。

于 2013-09-30T03:59:13.257 回答