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