子类的sharedClient方法

时间:2013-09-30 02:59:49

标签: objective-c cocoa inheritance singleton superclass

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

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

在这个方法中我想调度一次对象。然后我定义了superClass.class A和B类的两个子类。

我希望在我调用A的方法sharedClient之后,有一个A的sharedClient,我已经调用了B的sharedClient,有一个B的对象。但是看来如果A和B调用了方法两者,总是有一个先前被称为类的对象。

1 个答案:

答案 0 :(得分:1)

dispatch_once执行它的名字所暗示的内容,因此只有一个alloc,并且只有一个赋值给实例。这将是第一个被调用的类的实例。

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