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

ios oc 和 swfit 用dispatch_once 创建单例

时间:2015-04-08 12:58:04      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

网上已经有方法了,我这里就是抄了下,原文链接

http://bj007.blog.51cto.com/1701577/649413

http://blog.csdn.net/u010124617/article/details/28856711?utm_source=tuicool

这里的dispatch_once_t就是一个用于标记的整型,没什么特殊之处。

用dispatch_once实现单例的最大好处就是线程安全!!这个经常会被面试问到,建立数据库和网络操作的单例时,确实存在线程安全问题。

先看oc的

+ (AccountManager *)sharedManager { 
    static AccountManager *sharedAccountManagerInstance = nil; 

    static dispatch_once_t predicate; dispatch_once(&predicate, ^{       
          sharedAccountManagerInstance = [[self alloc] init]; 
    });

    return sharedAccountManagerInstance; 

}

再看swfit的,这里使用了内部的struct是因为目前swift的class中不支持static定义类属性。

class SwiftSingleton{
    class func shareInstance()->SwiftSingleton{
        struct YRSingleton{
            static var predicate:dispatch_once_t = 0
            static var instance:SwiftSingleton? = nil
        }
        dispatch_once(&YRSingleton.predicate,{
                YRSingleton.instance=SwiftSingleton()
            }
        )
        return YRSingleton.instance!
    }
}

 

ios oc 和 swfit 用dispatch_once 创建单例

标签:

原文地址:http://www.cnblogs.com/breezemist/p/4401714.html

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