Understanding Singleton in Swift(了解SWIFT中的Singleton)
本文介绍了了解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
,您将看到它确认a
和b
指向同一实例。)
如果要禁止创建Global
的更多实例,请将其init
设为私有:
private init() { }
但请记住,您仍可以从声明它的文件中创建其他Globals
,因此如果您在游乐场或单文件测试项目中执行上述操作,您将看不到任何效果。
这篇关于了解SWIFT中的Singleton的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:了解SWIFT中的Singleton


猜你喜欢
- 想使用ViewPager,无法识别android.support.*? 2022-01-01
- android 4中的android RadioButton问题 2022-01-01
- 在测试浓缩咖啡时,Android设备不会在屏幕上启动活动 2022-01-01
- 如何检查发送到 Android 应用程序的 Firebase 消息的传递状态? 2022-01-01
- MalformedJsonException:在第1行第1列路径中使用JsonReader.setLenient(True)接受格式错误的JSON 2022-01-01
- Android viewpager检测滑动超出范围 2022-01-01
- Android - 拆分 Drawable 2022-01-01
- 用 Swift 实现 UITextFieldDelegate 2022-01-01
- Android - 我如何找出用户有多少未读电子邮件? 2022-01-01
- 使用自定义动画时在 iOS9 上忽略 edgesForExtendedLayout 2022-01-01