您的位置:首页 > 移动开发 > IOS开发

ios oc 和 swfit 用dispatch_once 创建单例

2015-04-08 10:29 197 查看
网上已经有方法了,我这里就是抄了下,原文链接

/article/4343716.html

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!
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: