冗余一致性错误消息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

回到顶部