码迷,mamicode.com
首页 > 编程语言 > 详细

Swift定义单例的三种方式

时间:2016-04-25 19:40:44      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:

第一种:使用GCD. 自定义一个class继承你要继承的类, 定义一个静态可选变量, 声明一个dispatch_once_t,并赋初始值0(0代表还没有被实例过, 如果被实例过了其值始终是1),剩下的和OC定义单例类似

 1 class NetWorkTools: AFHTTPSessionManager {
 2 
 3     //MARK: - 单例
 4     static var instance: NetWorkTools?
 5     static var once_t: dispatch_once_t = 0
 6     
 7     class func shareInstance() -> NetWorkTools
 8     {
 9         dispatch_once(&once_t) { 
10             
11             instance = NetWorkTools()
12         }
13         
14         return instance!
15     }
16 }

第二种:直接定义一个静态不可变常量,然后定义一个类方法返回值为你要单例化的类,直接返回这个变量

1     static let netWorkTool = NetWorkTools()
2     
3     class func shareInstance() -> NetWorkTools {
4 
5         return netWorkTool
6     }

第三种:和第二种类似, 只不过定义常量时直接以类似懒加载的方式实现

 1 static let networkTool: NetWorkTools = {
 2        
 3         let networkTool = NetWorkTools(baseURL: NSURL.init(string: "https://api.weibo.com/"))
 4         
 5         networkTool.responseSerializer.acceptableContentTypes = (NSSet(objects: "application/json", "text/json", "text/javascript", "text/plain") as! Set<String>)
 6 
 7         return networkTool
 8     }()
 9     
10     class func shareInstance() -> NetWorkTools
11     {
12         return networkTool
13     }

 

Swift定义单例的三种方式

标签:

原文地址:http://www.cnblogs.com/joezblog/p/5432148.html

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