Swift:Singleton类对象变量初始化

时间:2017-05-19 17:19:21

标签: objective-c swift singleton

我正在尝试在singleton类中创建int对象变量。这是我的ObjC版本:

+(MyClass*) single
{
    static MyClass *shareObject = nil;
    static dispatch_once_t onceToken;
    dispatch_once ( &onceToken, ^{
        shareObject = [[self alloc] init];
        shareObject.myArray = [NSMutableArray new];
    });
    return shareObject;
}

Swift版本:

class MyClass {

    static let sharedInstance = MyClass()
    var myArray = Array<Any>()
}

对于ObjC版本,我知道myArray是init一次。但是在Swift版本的情况下,我向你们提问。 myArray变量是否为init一次?

1 个答案:

答案 0 :(得分:1)

您需要添加私有初始值设定项,以确保其他人无法手动实例化MyClass

class MyClass {
    static let sharedInstance = MyClass()

    var myArray = Array<Any>()

    private init() {}
}

这种方式只能有MyClass(单例)的一个对象,因此初始化器(= Array<Any>())只能运行一次。这一切都是线程安全的。