Swift-单例模式

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

核心代码:

`let sharedData = StudyManager()

class StudyManager {

static let sharedInstance:StudyManager = StudyManager()

class var shared: StudyManager {
    return sharedData
}

}`

常用的是定义一个静态变量:

static let sharedInstance:StudyManager = StudyManager()

第二种方式定义Class类型的变量:

class var shared: StudyManager { return sharedData }

测试代码:

` 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))")`

打印地址有两种方式:

print(Unmanaged.passUnretained(student1).toOpaque())

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

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

你可能感兴趣的:(Swift-单例模式)