8.1 协议

8.1 协议

协议是一个全新的概念,协议本身不是一个类型,也不能创建实例。协议就如其字面意思一样,是一种协商好之后达成的共识。在Swift中,如果一个类型满足某个协议,那么这个类型需要提供协议中声明的属性和方法,不然编译器就不会通过。使用协议之后的好处是:有时候只需要一个满足某个协议的实例(这样就不必知道这个实例的具体类型),就可以访问或者调用这个实例的属性或方法。

在后续的应用开发学习中,读者会接触到很多协议,比如UITableView和UICollectionView。这两种控件使用协议的方式将数据源和操作回调从控件分离出来,交给视图控制器或者其他类进行实现。这样做有两个好处:第一是不必用继承的方式去自定义自己的控件行为,第二是可以通过协议约定使用者必须实现的属性和方法。