Reputation: 695
When I try this I get error:
class ViewController: UIViewController, UIScrollViewDelegate {
......
}
extension ViewController: UIScrollViewDelegate { // Error: Redundant conformance of 'ViewController' to protocol 'UI
....
}
When I try this I don't get error:
class ViewController: UIViewController {
......
}
extension ViewController: UIScrollViewDelegate { // No error
...
}
Why do I not add UIScrollViewDelegate to ViewController when I use extension?
If a class is type of UIViewController means it conforms to UIScrollViewDelegate ?
Upvotes: 3
Views: 6118
Reputation: 2683
The error is self-explaining. You don't have to conform to a protocol multiple times. You can either do 1)
class ViewController: UIViewController, UIScrollViewDelegate {
......
}
or
2)
class ViewController: UIViewController {
......
}
extension ViewController: UIScrollViewDelegate { // No error
...
}
In case 1, you don't need an extension because the class itself adopts the protocol. The purpose of the extension is to add more functionality to the class. In case 2, it is clear that the extension adopts to the protocol.
Upvotes: 1
Reputation: 639
In the first code sample, you've already added conformance to UIScrollViewDelegate
with the class declaration.
Now, when you try to conform to UIScrollViewDelegate
again with the extension, swift screams at you.
For the second code sample the conformance is added in the extension. The class did not conform to UIScrollViewDelegate
before the extension was added.
Upvotes: 6