Swift DeveloperiOS DeveloperiOS学习笔记

Swift-单例模式

2017-04-16  本文已影响76人  FlyElephant

iOS开发中过程中最熟悉的设计模式应该是单例模式,例如NotificationCenter通知中心、Application应用,FileMange文件处.Objective-C中实现单例通过dispatch_once实现,Swift实现单例反而比较简单,只需要一行代码.

核心代码:
<pre><code>`let sharedData = StudyManager()

class StudyManager {

static let sharedInstance:StudyManager = StudyManager()

class var shared: StudyManager {
    return sharedData
}

}`</code></pre>

常用的是定义一个静态变量:
<pre><code>static let sharedInstance:StudyManager = StudyManager()</code</pre>

第二种方式定义Class类型的变量:
<pre><code>class var shared: StudyManager { return sharedData }</code></pre>

测试代码:
<pre><code>` let student1:StudyManager = StudyManager.sharedInstance

    let student2:StudyManager = StudyManager.sharedInstance
    
    print("\(address(o: student1))---\(address(o: student2))")
    
    let stu1 = StudyManager.shared
    let stu2 = StudyManager.shared
    print("单例:\(address(o: stu1))---\(address(o: stu2))")`</code></pre>

打印地址有两种方式:
<pre><code>print(Unmanaged.passUnretained(student1).toOpaque())</code></pre>

<pre><code>func address<T: AnyObject>(o: T) -> String { return String.init(format: "%018p", unsafeBitCast(o, to: Int.self)) }</code></pre>

单例模式可以让多个模块共用同一个对象,保证了数据的唯一性,而且可以统一逻辑功能,具有较高的灵活性.

上一篇下一篇

猜你喜欢

热点阅读