我正在尝试在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一次?
答案 0 :(得分:1)
您需要添加私有初始值设定项,以确保其他人无法手动实例化MyClass
。
class MyClass {
static let sharedInstance = MyClass()
var myArray = Array<Any>()
private init() {}
}
这种方式只能有MyClass
(单例)的一个对象,因此初始化器(= Array<Any>()
)只能运行一次。这一切都是线程安全的。