单例的写法与用法
class Handler {
///饿汉模式的单例 特点是:在定义的一开始便new一个对象 饿汉模式比较安全 缺点是比较浪费空间
static var handler:Handler = Handler()
//懒汉模式的单例 特点是:在真正需要new一个对象的时候才new对象 懒汉如果高并发时候 可能出现线程不安全的问题不推荐使用
//懒汉式是典型的时间换空间,也就是每次获取实例都会进行判断,看是否需要创建实例,浪费判断的时间。当然,如果一直没有人使用的话,那就不会创建实例,则节约内存空间。
static var predicate:dispatch_once_t = 0
static var handler2:Handler!
class func getInstance() -> Handler{
//比较安全的单例写法 加了线程锁
dispatch_once(&predicate) {
if Handler.handler2 == nil {
Handler.handler2 = Handler()
}
}
return Handler.handler2
}
var loadData:Bool = false
init() {
print("被实例化")
}
}
class Test:NSObject {
var hand1:Handler!
var hand2:Handler!
override init() {
super.init()
initHandler()
}
func initHandler() {
// hand1 = Handler.handler
// hand2 = Handler.handler
// hand1.loadData = true
hand1 = Handler.getInstance()
hand2 = Handler.getInstance()
hand1.loadData = true
}
}
let t = Test()
print(t.hand2.loadData)