如何从初始化程序调用类函数?我正在寻找能够起作用的东西:
class A {
var name: String
class func getName() -> String {
return "first class"
}
init() {
self.name = Type.getName()
}
}
class B: A {
var bar: String
override class func getName() -> String {
return "second class"
}
init() {
self.bar = "bar"
super.init()
}
}
A().name // "first class"
B().name // "second class"
B().bar // "bar"
(我正在查看类函数,因为它们可以在初始化实例之前被覆盖和调用)
===编辑===
这个问题得到了很好的回答:https://stackoverflow.com/a/24711715/2054629
有趣的是,xcode无法编译类似的东西:class A {
var id: String
class func getId() -> String {
return ":)"
}
init(from id: String?) {
let finalId = id ?? type(of: self).getId()
self.id = finalId
}
}
with:'self' captured by a closure before all members were initialized
虽然使用let finalId = type(of: self).getId()
工作正常。