gpt4 book ai didi

ios - Singleton 类 swift 返回其属性 nil?

转载 作者:行者123 更新时间:2023-11-28 09:28:17 25 4
gpt4 key购买 nike

我正在尝试在 Playground 中学习 Singleton 类,但不知道如何获取它的唯一实例。为什么这个 singleton 类在访问其属性时返回 nil?如果有人能解释我为什么需要这个 Static 就太好了类(class)?

class SingletonC {
var a:String?

class var sharedInstance: SingletonC {

struct Static {
static var onceToken: dispatch_once_t = 0
static var instance: SingletonC? = nil
}

dispatch_once(&Static.onceToken) {
Static.instance = SingletonC()
}

return Static.instance!
}
}
var ab = SingletonC()

ab.a = "fdsfds"

SingletonC.sharedInstance.a //prints nil

更新:经过试验,有时我得到了值(value)

SingletonC.sharedInstance.a = "Hello"
SingletonC.sharedInstance.a

但是第一次创建SingletonC的对象可以获取吗?Singleton类的使用方法是什么?

最佳答案

我想你想要的是一个静态属性。代替 var a: String?,使用 static var a: String?

因此,所有实例都具有相同的 a 值。

通过SingletonC.a调用a

您的代码所做的是创建一个 SingletonC 实例并将其放入 ab 中。然后将 aba 属性设置为 "fdsfds"(只有 ab 实例有 a 的值 "fdsfds").

第三行,SingletonC.sharedInstance.a新建一个SingletonC实例,放到Static.instance中(只创建一次通过使用 dispatch_once 函数)。因此,absharedInstanceSingletonC 的不同实例。

更新问题的答案:

dispatch_once(&Static.onceToken) {
let instance = SingletonC()
instance.a = "Your string"
Static.instance = instance
}

关于ios - Singleton 类 swift 返回其属性 nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31017695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com