冗余一致性错误消息Swift 2
我将项目更新为Swift 2,并收到了很多redundant conformance of XXX to protocol
YYY。当类符合时,这种情况尤其经常发生(或总是发生)CustomStringConvertible
。也有一些地方Equatable
。
class GraphFeatureNumbersetRange: GraphFeature, CustomStringConvertible { // <--- get the error here...
}
我怀疑在实现var description: String { get
}或协议需要的任何方法时,我不需要显式地遵循协议。我是否应该按照fixit指示并删除所有这些指示?如果一个类实现了所有协议的方法,Swift现在会自动推断出一致性吗?
回答:
如果子类声明符合已经从超类继承的协议,则将在Xcode 7(Swift 2)中获得该错误消息。例:
class MyClass : CustomStringConvertible { var description: String { return "MyClass" }
}
class Subclass : MyClass, CustomStringConvertible {
override var description: String { return "Subclass" }
}
错误日志显示:
main.swift:10:27:错误:“子类”与协议“ CustomStringConvertible”的冗余一致性类子类:MyClass,CustomStringConvertible {
^
main.swift:10:7:注意:“子类”从此处继承超类对协议“ CustomStringConvertible”的一致性
类子类:MyClass,CustomStringConvertible {
^
从子类声明中删除协议一致性解决了以下问题:
class Subclass : MyClass { override var description: String { return "Subclass" }
}
但是超类必须显式声明一致性,这不是从description
属性的存在自动推断出来的。
以上是 冗余一致性错误消息Swift 2 的全部内容, 来源链接: utcz.com/qa/419621.html