Swift-单例模式

作者: FlyElephant | 来源:发表于2017-04-16 19:59 被阅读76次

    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>

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

    相关文章

      网友评论

        本文标题:Swift-单例模式

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