【发布时间】:2017-05-19 09:07:38
【问题描述】:
我用泛型逻辑创建了一个小例子,但我不明白这个错误是什么意思。我认为指定初始化程序存在一些问题。
希望有人已经处理过了,可以给我解释一下。
protocol Test {
init(value: Int)
}
class ClassTest<T: Test> where T: UIView {
var t: T
init() {
t = T(value: 2) //error:
}
}
给出以下编译错误:
参数标签 '(value:)' 不匹配任何可用的重载
【问题讨论】:
-
我测试了your code on Swift 3.1,它运行良好;)
-
为什么添加了
where T: UIView?如果它是一个 UIView 类,你需要实现 init(coder:) 这就是你得到错误的原因 -
@PauloMattos 尝试在 Xcode 中检查它:)
-
@PauloMattos 该类需要从另一个类继承才能重现:swift.sandbox.bluemix.net/#/repl/591ebcdaa1cd601a30972e69
-
这是一个已经提交的bug,见SR-3837
标签: ios swift generics swift-protocols