我们在Swift中遇到了类型方法的奇怪问题。
我们有以下文件:
Koan.swift
class Koan {
}
AboutAsserts.swift
class AboutAsserts: Koan {
class func testTrueShouldBeTrue() {
println("Koan runs")
}
}
main.swift
println("Before")
AboutAsserts.testTrueShouldBeTrue()
println("After")
当代码运行时,我们会看到"之前"和#34;之后"但不是" Koan跑步"。
如果我们将AboutAsserts设置为不从Koan继承,则可以正常工作(" Koan运行"打印)。
如果我们将testTrueShouldBeTrue更改为实例方法,它就可以工作。
如果我们将testTrueShouldBeTrue作为类方法保存,并实例化一个AboutAsserts(即使不使用它),它也能正常工作
main.swift
println("About to run all the koans")
var koan = AboutAsserts()
AboutAsserts.testTrueShouldBeTrue()
println("Hello, World!")
我们疯了吗?