【发布时间】:2014-09-26 04:56:22
【问题描述】:
我正在尝试用 Swift 编写一个泛型类,它的泛型类型既继承自类又符合协议。但是,以下代码会导致编译器崩溃并出现分段错误:11.
protocol Protocol {
var protocolProperty: Any? { get }
}
class Class {
var classProperty: Any?
}
class GenericClass<T: Class where T: Protocol> {
var genericProperty: T?
func foo() {
let classProperty: Any? = genericProperty!.classProperty
// This is the culprit
let protocolProperty: Any? = genericProperty!.protocolProperty
}
}
注释掉对协议属性的访问允许程序编译。如果编译器崩溃,就无法从协议中访问任何内容。有没有一种解决方法来创建一个像这样工作的泛型类?
【问题讨论】:
-
无论代码如何,编译器都不应崩溃。如果你还没有,你应该报告给苹果(bugreport.apple.com)。