单例模式重叠?

3

我有两个使用单例的类。

class Boss {
    static let sharedInstance = Boss()
    private init() {} 

    var user_id : String?
    var username : String?
}



class Job {
    static let sharedInstance = Job()
    private init() {} 

    var job_id : String?
    var JobType : String?
}

但是在首先初始化Boss.sharedInstance后,Job.sharedInstance也包含了Boss类的变量。但是将sharedInstance替换为其他名称(例如job_sharedInstanceboss_sharedInstance),一切就正常了。这很奇怪。有人可以解释一下为什么会出现这种情况吗?提前感谢您的回答。
以下是断点。虽然Job.sharedInstance没有user_id,username等,但它显示了出来。 enter image description here

你能提供一个(简短的)完整的示例来演示这个问题吗? - Martin R
你所说的“Job.sharedInstance也包含Boss类变量”是什么意思? - Martin R
@MartinR,请检查我的编辑后的问题。我放了一张截图。 - cloudy45man
这是调试器视图中的一个错误。当有疑问时,请打印值或在调试器控制台中检查它们。 - Martin R
很多错误都有奇怪的属性 :) - Martin R
显示剩余2条评论
1个回答

2

您的代码没有问题。 BossJob都有一个static let sharedInstance属性,它们彼此完全独立。不同的类可以具有相同名称的静态属性,这些属性不会“重叠”。

如果调试器显示Job.sharedInstance的属性甚至没有在Job类中定义,那么这是调试器视图中的错误。

如果不确定,请添加print语句到您的代码中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接