gpt4 book ai didi

ios - 为什么引用 .self 而不是 type.sharedInstance 有效?

转载 作者:行者123 更新时间:2023-11-29 01:49:06 25 4
gpt4 key购买 nike

我有这样的代码:

class miniUser {

///The shared instance of miniUser.
static let SI = miniUser()

init()
{
self.currentUser = self.getCurrentProfile()! as String
self.refreshUserList()
}

...

}

该代码工作正常。但是,此代码使用共享实例...

class miniUser {

///The shared instance of miniUser.
static let SI = miniUser()

init()
{
miniUser.SI.currentUser = miniUser.SI.getCurrentProfile()! as String
miniUser.SI.refreshUserList()
}

...

}

那是行不通的。事实上,它甚至不会在运行时吐出错误,它只是在代码的另一部分尝试初始化它时卡住在 0 fps(我正在使用 SpriteKit)。

理想情况下,两个版本的代码应该表示相同的意思。

谁能向我解释为什么在初始化期间使用 self.function() 而不是 type.sharedInstance.function() ?我对此不确定,需要解释以了解这里发生的事情。

任何帮助都是——错误,任何解释都将受到赞赏。

最佳答案

定义 let SI = miniUser() 将调用您的类的 init() 以创建共享实例。但是,init() 试图访问共享实例 miniUser.SI,因此这是一个递归定义。编译器可能根本不应该允许它——我建议 filing a bug .如果您需要在初始化期间修改实例变量,这就是 self. 的用途。 (事实上​​ ,您可以省略 self. 因为它是隐含的。)

关于ios - 为什么引用 .self 而不是 type.sharedInstance 有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31601956/

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