美文网首页
Swift 单例的四种写法

Swift 单例的四种写法

作者: HeartPower | 来源:发表于2017-01-18 07:09 被阅读646次
第一种

这种方式是最简单的。
<pre>import UIKit

final class Single: NSObject {
var name: String = "第一种单例" //这是测试用的属性
static let shared = Single()
private override init() {}
}
</pre>

第二种

第二种完全是OC风格的单例,但是由于Swift3中废弃了原来的dispatch_once_t,所以需要先给DispatchQueue添加一个extension,实现原先的dispatch_once_t效果
<pre>import UIKit

final class SingleShare: NSObject {
var name: String = "第二种单例"
static func shared() -> SingleShare {
struct Single {
static var single = SingleShare()
}
DispatchQueue.once(token: "SINGLE") {
Single.single = shared()
}
return Single.single
}
}

public extension DispatchQueue {
private static var onceToken = String
public class func once(token: String, block:@escaping () -> Void) {
objc_sync_enter(self)
defer {
objc_sync_exit(self)
}
if onceToken.contains(token){
return
}
onceToken.append(token)
block()
}

}</pre>

第三种

由于Swift3中加强了权限控制,导致如果重写private override init()方法会报错,所以这种写法在Swift3中的安全性有待考察。
<pre>private let single = Single3()
final class Single3: NSObject {
var name: String = "第三种单例"
static var shared: Single3 {
return single
}
}</pre>

第四种

在方法内定义静态变量。
<pre>final class Single4: NSObject {
var name: String = "第四种单例"
static var shared: Single4{
struct Static {
static let instance: Single4 = Single4()
}
return Static.instance
}
private override init() {}
}</pre>

注:final关键字的作用是这个类或方法不可以被继承和重写。

相关文章

  • 单例

    //单例 // Swift 1.2后,可以使用类变量 // Swift 1.2之前单例的写法 /* class M...

  • Swift中的单例

    转战swift有几天了,接触到了swift中的单例,下面介绍一下swift中的单例: 仿照OC中的单例的写法,写一...

  • Java四种单例设计模式

    Java中的四种单例模式 单例模式是最容易理解的设计模式之一,介绍Java中单例模式的四种写法。 1.基本单例模式...

  • Swift 单例的四种写法

    第一种 这种方式是最简单的。 import UIKit final class Single: NSObject ...

  • swift 单例写法

  • Swift单例写法

    最简单粗暴的一种 用法

  • Swift的四种传值方法

    Swift中常用的四种传值方法:单例,单例,闭包(相当于OC的block传值),通知 1单例: 1>.创建单例变量...

  • iOS开发技巧(Swift版):单例创建

    在些项目的时候, 我们往往会用到单例模式,.相比OC中单例的写法, 结合Swift的语法特点,总结一下3种单例模式...

  • 一行代码实现swift的单例模式

    swift实现单例的四种方式 : 单例模式 单例模式是设计模式中最简单的一种,甚至有些模式大师都不称其为模式,称其...

  • Swift严格的单例写法

    相比OC,Swift有很优雅的实现单例的写法。 实现 单例类Tools 客户端调用: 说明 当尝试使用 这种方法去...

网友评论

      本文标题:Swift 单例的四种写法

      本文链接:https://www.haomeiwen.com/subject/xjpvbttx.html