在Swift中,是否有像self这样的关键字用于类?

在Swift中,是否有像self这样的关键字用于类?,swift,static,singleton,subclass,Swift,Static,Singleton,Subclass,在这个小片段中,我将为mySuperClass()设置一个静态变量,以创建一个简单的单例 有没有一种不使用类名mySuperClass的方法可以做到这一点 我这样问是因为我想对这样的东西进行子类化,让子类自己创建一个sharedInstance,而不是它所做的超级类的sharedInstance 此处的完整代码(可编辑): 换句话说,您希望将单例子类化 让我知道这是否解决了你的问题 import Cocoa class mySuperClass{ static var sharedIn

在这个小片段中,我将为mySuperClass()设置一个静态变量,以创建一个简单的单例

有没有一种不使用类名mySuperClass的方法可以做到这一点

我这样问是因为我想对这样的东西进行子类化,让子类自己创建一个sharedInstance,而不是它所做的超级类的sharedInstance

此处的完整代码(可编辑):


换句话说,您希望将单例子类化

让我知道这是否解决了你的问题

import Cocoa

class mySuperClass{
    static var sharedInstance = mySuperClass()
    var test = "hello"
}

class mySubClass:mySuperClass{
    override init() {
        super.init()
        test = "hello from subclass"
    }
}


print(mySuperClass.sharedInstance.test)

print(mySubClass.sharedInstance.test) //prints test from mySuperClass not subClass

您所能做的最好的事情是将
static
更改为
并覆盖
共享状态
<代码> MySubCype 不知道在创建变量时,你可以从中派生出什么子类。提示:在C++中,没有什么类似于<代码>自身>代码>,它可以重写当前的类,因此我们使用类内的Type来定义自己作为那个类。此类型仅在该类中具有作用域,因此继承的类可以以不同方式声明其新的
self
。也许您可以以同样的方式在Swift中使用
typealias
import Cocoa

class mySuperClass{
    static var sharedInstance = mySuperClass()
    var test = "hello"
}

class mySubClass:mySuperClass{
    override init() {
        super.init()
        test = "hello from subclass"
    }
}


print(mySuperClass.sharedInstance.test)

print(mySubClass.sharedInstance.test) //prints test from mySuperClass not subClass
class MySuperClass {
    private static let superClassInstance = MySuperClass()
    class var sharedInstance: MySuperClass { return superClassInstance }
    private init() { }

    var test = "hello"
}

class MySubClass: MySuperClass {
    private static let subClassInstance = MySubClass()
    override class var sharedInstance: MySubClass { return subClassInstance }

    private override init() {
        super.init()
        test = "hello from subclass"
    }
}


print(MySuperClass.sharedInstance.test) // "hello"
print(MySubClass.sharedInstance.test) // "hello from subclass"