错误:“ViewController”与扩展协议的冗余一致性
Posted
技术标签:
【中文标题】错误:“ViewController”与扩展协议的冗余一致性【英文标题】:Error: Redundant conformance of 'ViewController' to protocol with extension 【发布时间】:2018-01-26 13:14:59 【问题描述】:当我尝试这个时,我得到了错误:
class ViewController: UIViewController, UIScrollViewDelegate
......
extension ViewController: UIScrollViewDelegate // Error: Redundant conformance of 'ViewController' to protocol 'UI
....
当我尝试这个时,我没有收到错误:
class ViewController: UIViewController
......
extension ViewController: UIScrollViewDelegate // No error
...
为什么我在使用扩展时没有将 UIScrollViewDelegate 添加到 ViewController 中?
如果一个类是 UIViewController 类型意味着它符合 UIScrollViewDelegate ?
【问题讨论】:
一个扩展继承了它扩展的类型的所有功能。采用两次协议与两次声明属性或方法相同。 【参考方案1】:在第一个代码示例中,您已经通过类声明添加了对UIScrollViewDelegate
的一致性。
现在,当您尝试使用扩展名再次符合 UIScrollViewDelegate
时,swift 会向您尖叫。
对于第二个代码示例,在扩展中添加了一致性。在添加扩展之前,该类不符合UIScrollViewDelegate
。
【讨论】:
【参考方案2】:错误是不言自明的。您不必多次遵守协议。 你可以做 1)
class ViewController: UIViewController, UIScrollViewDelegate
......
或
2)
class ViewController: UIViewController
......
extension ViewController: UIScrollViewDelegate // No error
...
在情况 1 中,您不需要扩展,因为类本身采用了协议。 扩展的目的是为类添加更多功能。情况2,很明显扩展采用了协议。
【讨论】:
以上是关于错误:“ViewController”与扩展协议的冗余一致性的主要内容,如果未能解决你的问题,请参考以下文章
Swift UITableView 控制器错误:类型“ViewController”不符合协议“UITableViewDataSource”
类型“ViewController”不符合协议“UITableViewDataSource”
类型 ViewController 不符合协议 SKPaymentTransactionObserver