了解SWIFT中的Singleton [英] Understanding Singleton in Swift

查看:35
本文介绍了了解SWIFT中的Singleton的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在SWIFT中创建一个Singleton,这就是我到目前为止所做的

class Global {

    class var sharedInstance:Global {

        struct singleton {

            static let instance:Global = Global()
        }

        return singleton.instance
    }


}

var a = Global.sharedInstance
var b = Global()

if a === b {

    println("Pointing to Same Instance")
}
else {

    println("Pointing to different instance")
}

我已经使用计算类型属性创建了一个Singleton(从另一个堆栈溢出问题中了解到了这一点)。到目前为止,输出是"指向不同的实例"。

我要查找的是上面示例中的"a"和"b",它们指向全局类的不同实例,这打破了单例的特点。如何使上例中的"a"和"b"指向类的同一实例。

谢谢

推荐答案

此模式不能保证Global类永远只有一个实例。它只允许任何人通过sharedinstance属性访问Global的单个公共实例。

因此Global()声明了Global类的新实例。但是Global.sharedinstance不会创建Global的新实例,而只是获取预先创建的实例(即在任何人第一次访问它时创建)。

(如果将b的声明更改为var b = Global.sharedinstance,您将看到它确认ab指向同一实例。)

如果要禁止创建Global的更多实例,请将其init设为私有:

    private init() {  }

但请记住,您仍可以从声明它的文件中创建其他Globals,因此如果您在游乐场或单文件测试项目中执行上述操作,您将看不到任何效果。

这篇关于了解SWIFT中的Singleton的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆