An Interface should have one purpose and one purpose only. If a class wants to implement a functionality from an interface, it shouldn't have to implement methods it doesn't need.
Example from Apple's UIKit:
protocol UITableViewDataSource: class {
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
optional func numberOfSections(in tableView: UITableView) -> Int
}A class implementing UITableViewDataSource is needed for every UITableView to provide content which will be displayed in the TableView.
protocol UITableViewDelegate: class {
optional func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
optional func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath)
} UITableViewDelegate provides functionality to handle specific events of the UITableView.