首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Swift 3中具有属性的Singleton

Swift 3中具有属性的Singleton
EN

Stack Overflow用户
提问于 2016-06-22 03:47:02
回答 3查看 83.2K关注 0票数 89

在苹果的Using Swift with Cocoa and Objective-C document (针对Swift 3进行了更新)中,他们给出了单例模式的以下示例:

代码语言:javascript
复制
class Singleton {
    static let sharedInstance: Singleton = {
        let instance = Singleton()

        // setup code

        return instance
    }()
}

让我们假设这个单例需要管理一个可变的字符串数组。如何/在何处声明该属性,并确保将其正确初始化为空的[String]数组?

EN

回答 3

Stack Overflow用户

发布于 2016-06-22 04:28:07

你可以像这样初始化一个空数组。

代码语言:javascript
复制
class Singleton {

    //MARK: Shared Instance

    static let sharedInstance : Singleton = {
        let instance = Singleton(array: [])
        return instance
    }()

    //MARK: Local Variable

    var emptyStringArray : [String]

    //MARK: Init

    init( array : [String]) {
        emptyStringArray = array
    }
}

或者,如果您更喜欢不同的方法,这种方法也可以。

代码语言:javascript
复制
class Singleton {

    //MARK: Shared Instance

    static let sharedInstance : Singleton = {
        let instance = Singleton()
        return instance
    }()

    //MARK: Local Variable

    var emptyStringArray : [String]? = nil

    //MARK: Init

    convenience init() {
        self.init(array : [])
    }

    //MARK: Init Array

    init( array : [String]) {
        emptyStringArray = array
    }
}
票数 59
EN

Stack Overflow用户

发布于 2017-01-24 18:17:12

根据苹果的文档:In Swift, you can simply use a static type property, which is guaranteed to be lazily initialized only once, even when accessed across multiple threads simultaneously

代码语言:javascript
复制
class Singleton {

    // MARK: - Shared

    static let shared = Singleton()
}

使用初始化方法:

代码语言:javascript
复制
class Singleton {

    // MARK: - Shared

    static let shared = Singleton()

    // MARK: - Initializer

    private init() {
    }

}
票数 30
EN

Stack Overflow用户

发布于 2016-06-22 03:51:34

任何初始化都将在init方法中完成。单例和非单例在这里没有区别。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37953317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档