Swift-单例模式

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单例模式 单例模式 单例模式的作用是解决“应用中只有一个实例”的一类问题。在Cocoa Touch框架中...
    spicyShrimp阅读 5,084评论 0 4
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,230评论 4 61
  • 1.第一种单例模式 2.第二种单例模式
    博行天下阅读 2,472评论 0 0
  • 我知道 你就在里面 那片白花花的荻花深处 你不出声 秋风也大 但你的心跳出卖了你 砰砰砰砰 我知道 你就在里面 那...
    老魁_河北阅读 1,722评论 0 0
  • 不知不觉,每日清晨瑜珈一小时已持续400多天了,这对于吃饭睡觉都无法准点我,算是一个小小突破。因为有了这次执行力的...
    007曾瑞英阅读 4,322评论 4 6