标签:
第一种:使用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 }
标签:
原文地址:http://www.cnblogs.com/joezblog/p/5432148.html