在swift中创建单例,相比在Objective-C更加的便宜,首先创建一个继承自NSbject的MyINstance类,实现的代码如下:
//在swift中,类方法中是不允许定义静态变量的,所以定义一个静态变量,应该写在方法外面
static var once_t: dispatch_once_t = 0
static var instance: MyInstance?
//用来获取单例对象的方法,class关键字相当于在Objective-C的类方法
class func shareInstance() -> MyINstance {
dispatch_once(&once_t){() -> Void in
instance = MyInstance()
}
return instance!
}
相比于以上的方法,在swift中还有一种更加简便的方法,这样写的理由是,在swift中,let关键字是线程安全的,用到的时候才会调用
static let instance: MyInstance = MyInstance()
class func shareInstance() ->MyInstance {
return instance
}
需要注意的是,在创建instance对象的时候,是可选类型,然而在返回对象的时候,又必须要是有值的,所以要在return对象的时候,加上’!’