Swift DispatchOnce 模式
Swift DispatchOnce 模式

Swift DispatchOnce 模式

DispatchOnce 是一种只执行一次(once)的线程安全模式,常用于:

1、初始化某个全局/单例对象。

2、设置全局只需初始化一次的资源。

3、注册只需执行一次的逻辑(如注册通知、方法交换等)。

Swift 中的 dispatch_once(已废弃)

在 Objective-C 中以前是这样写的(现在不推荐):

static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
    // 只执行一次的代码
});

Swift 推荐写法(懒加载或 static let)

在 Swift 中,实现 DispatchOnce 模式推荐使用 static let:

class MySingleton {
    static let shared = MySingleton()

    private init() {
        // 初始化代码只执行一次
        print("MySingleton 初始化")
    }
}

这是单例模式的用法,它确保在应用程序中某个类只有一个实例,并提供一个全局访问点来使用该实例。这种模式通常用于管理共享资源或控制全局状态。

或者用于一次性执行逻辑:

struct Once {
    static var runOnce: Void = {
        print("只执行一次的逻辑")
    }()
}

// 使用
_ = Once.runOnce

总结

DispatchOnce模式在实际应用中,常用语单例对象的初始化,注册通知、交换方法等一次性操作,还可以设置全局配置项。

相关文章

1、Swift控制全局的单例模式:https://fangjunyu.com/2024/10/19/swift%e6%8e%a7%e5%88%b6%e5%85%a8%e5%b1%80%e7%9a%84%e5%8d%95%e4%be%8b%e6%a8%a1%e5%bc%8f/

2、Swift 单例模式下的视图关系:https://fangjunyu.com/2024/10/25/swift-%e5%8d%95%e4%be%8b%e6%a8%a1%e5%bc%8f%e4%b8%8b%e7%9a%84%e8%a7%86%e5%9b%be%e5%85%b3%e7%b3%bb/

3、Swift静态属性的简写形式:https://fangjunyu.com/2024/11/25/swift%e9%9d%99%e6%80%81%e5%b1%9e%e6%80%a7%e7%9a%84%e7%ae%80%e5%86%99%e5%bd%a2%e5%bc%8f/

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注