我刚刚了解了扩展,我想知道,有一个有关扩展协议的示例,因为exmaple可以说我们有协议:
protocol CanFly {
func canFly()
}
这允许所有可以飞行的类基本上都可以飞行..现在可以说我们使用扩展来扩展协议,然后执行:
extension CanFly {
func canEat() {
print("I can eat")
}
}
这的目的是什么,如果我们可以仅将func canEat
添加到我们的协议中,那么更多的协议就像一个抽象结构,为什么我们要向其中添加带主体的func?
根据Protocol Extensions上的Swift文档:
协议可以扩展为提供方法,初始化程序,下标,以及将属性实现计算为符合标准的类型。这允许您可以定义协议本身的行为,而不是每个协议类型的个人符合性或全局功能。
这意味着您可以运行逻辑在协议扩展功能内,因此您不必在符合协议的每个类中都进行此操作。
个人,我还发现扩展对于扩展诸如String或UIViewController之类的内置类的功能很有用,因为可以从应用程序中的任何位置调用扩展。我有一些开源扩展snippets,如果您愿意,可以看看。