Swift 协议(protocol)的理解与使用

2,033 阅读2分钟

1.协议是用来干嘛的?

    协议是用可以用来给枚举,结构体,类添加属性,方法,下标添加声明的东西

2.协议的使用与注意点

协议既然是(属性,方法,下标)一种声明,就不会有(属性,方法,下标)实现。

    2.1 定义一个含有属性,方法,下标的协议


    因为协议只会定义申明,暂时没有实现,所以属性和下标都是没有默认值的,要改变属性的值。自然只能用var。而实现协议的对象要给属性赋值取值,自然需要通过set,get来定义。如果只需要取值使用get即可。

    2.2 协议的实现以及使用(协议是一种类型)


协议的属性可以成为存储属性和计算属性

当我们使用协议的方式初始化的话🤔️

当我们使用类的形式初始化

当我们使用协议的方式初始化的时候,协议里面定义了set,我们才能给属性赋值。当我们以对象类型去创建的话,因为对象本身默认就有set和get,所以我们即使去掉了协议的set,我们也能给属性赋值        

2.3 static和class的使用

    我们可以给协议里面的方法,属性,下标添加关键字,这样我们可以通过对象直接访问属性 

2.4 在协议中定义初始化器init


在协议中定义初始化器

    我们可以在协议中定义初始化器。然后在对应的枚举,结构体,类中使用它。值得注意的是在类中使用初始化器需要使用required来修饰,结构体和枚举不需要


类实现协议的初始化器需要required修饰

    


结构体和枚举不需要

枚举可以直接使用协议的初始化器

2.5 mutating的使用 

当枚举或者结构体想要在协议定义的方法里面修改捕捉到的外部变量的值时,我们需要给协议定义的方法添加mutating,记住只有枚举和结构体才需要,类不需要

2.6 当父类和协议有相同的初始化器

我们需要在使用初始化器的时候在初始化器上添加override和required。