swift中的dispatch_once_t替代方案[重复]

Posted

技术标签:

【中文标题】swift中的dispatch_once_t替代方案[重复]【英文标题】:dispatch_once_t alternative in swift [duplicate] 【发布时间】:2017-12-04 15:13:27 【问题描述】:

已经尝试过这些:

'dispatch_once_t' is unavailable in Swift: Use lazily initialized globals instead

Whither dispatch_once in Swift 3?

这是我的代码:

class var sharedInstance:Model
        struct Static
            static var instance:Model?
            static var token: dispatch_once_t = 0
        

        dispatch_once(&Static.token)
            Static.instance = Model()
        
        return Static.instance!

    

请给我建议dispatch_once_t的替代方法。我不知道swift,我编码C/C++/Obj.C,请给我swift代码来解决上述问题

【问题讨论】:

dispatch_once() 的替代品,或者说是制作单例的好方法(在 Objective-C 中通常称为 sharedInstance)?那是一个不同的问题。对于单身人士:***.com/questions/24024549/… ?不建议完全模仿另一种语言而不使其适应您当前的语言。 @Larme,感谢您的建议。请给我快速版本的代码来修复上述错误...请回答 【参考方案1】:

在swift中单例可以写成,

class Model: NSObject 
    static let sharedInstance = Model()

然后使用Model.sharedInstance。您不需要像在目标 c 中那样调度一次。

来源https://thatthinginswift.com/singletons/

【讨论】:

请更改我的代码,我更新的代码是什么? 现在检查。只需在该类中添加它而不是您的代码。 非常感谢。这个问题已解决,效果很好。

以上是关于swift中的dispatch_once_t替代方案[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中只执行一次代码?

Swift:删除嵌入在导航控制器中的表格视图控制器页脚下方的空间

Swift 3替代NSStringFromCGSize

扩展中的延迟加载属性(Swift)

swift NSLog的Swift替代品

Swift 3 - 保存图片替代