不确定这是否是我的快速问题。但我已经提交了一个错误。 请看附件,最后一行显示' hola',但它显示' hello'。
它阻止我的项目,无论如何走动?感谢。
//游乐场 - 名词:人们可以玩的地方
import UIKit
protocol Hello {
class func hello() -> String
}
class HelloEnglish: Hello {
class func hello() -> String {
return "hello"
}
}
class HelloSpanish<E>: HelloEnglish {
override class func hello() -> String {
return "hola"
}
}
typealias HelloSpanishClass = HelloSpanish<AnyObject>
println("expect: hello")
HelloEnglish.hello()
println("expect: hola")
HelloSpanishClass.hello()
func sayHello<T: Hello>(type: T.Type) -> String {
return type.hello()
}
println("expect: hello")
sayHello(HelloEnglish.self)
println("expect: hola")
sayHello(HelloSpanishClass.self)
答案 0 :(得分:1)
这适用于Xcode 6.1.1(6A2006)
在6.1.1的发行说明中,Apple提到此错误已修复:
满足协议要求的类方法和初始化程序现在可以在通用上下文中调用时正确调用子类覆盖。 (18828217)例如:
protocol P { class func foo() } class C: P { class func foo() { println("C!") } } class D: C { override class func foo() { println("D!") } } func foo<T: P>(x: T) { x.dynamicType.foo() } foo(C()) // Prints "C!" foo(D()) // Used to incorrectly print "C!", now prints "D!"