码迷,mamicode.com
首页 > 移动开发 > 详细

iOS swift单例模式

时间:2015-05-12 11:50:21      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

普通的写法:

class SwiftSingleton {  
    class var shared: SwiftSingleton {  
    if !Inner.instance {  
        Inner.instance = SwiftSingleton()  
        }  
        returnInner.instance!  
    }  
       
    structInner {  
        staticvar instance: SwiftSingleton?  
    }  

但系统多个线程在执行,这种情况下就会创建多个实例,没有保证实例的唯一性。也可以修改成另外一种方式:










class SwiftSingleton {
    classvar shared: SwiftSingleton {
            returnInner.instance
    }
 
    struct Inner {
        static let instance: SwiftSingleton = SwiftSingleton()
    }

}


首次访问Inner.instance时才会创建SwiftSingleton,不会创建多个对象,但是这样返回对象是想修改重新获取也不好操作。

因此可以使用GCD来实现:

class SwiftSingleton {
    classvar shared: SwiftSingleton {
        dispatch_once(&Inner.token) {
            Inner.instance = SwiftSingleton()
        }
        return Inner.instance!
    }
    struct Inner {
        static var instance: SwiftSingleton?
        static var token: dispatch_once_t = 0
    }
     
}

















iOS swift单例模式

标签:

原文地址:http://my.oschina.net/jesonzhang/blog/413598

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!