1.协议是用来干吗的?ide
协议是用能够用来给枚举,结构体,类添加属性,方法,下标添加声明的东西ui
2.协议的使用与注意点cdn
协议既然是(属性,方法,下标)一种声明,就不会有(属性,方法,下标)实现。对象
2.1 定义一个含有属性,方法,下标的协议blog
由于协议只会定义申明,暂时没有实现,因此属性和下标都是没有默认值的,要改变属性的值。天然只能用var。而实现协议的对象要给属性赋值取值,天然须要经过set,get来定义。若是只须要取值使用get便可。get
2.2 协议的实现以及使用(协议是一种类型)it
当咱们使用协议的方式初始化的时候,协议里面定义了set,咱们才能给属性赋值。当咱们以对象类型去建立的话,由于对象自己默认就有set和get,因此咱们即便去掉了协议的set,咱们也能给属性赋值 io
2.3 static和class的使用class
咱们能够给协议里面的方法,属性,下标添加关键字,这样咱们能够经过对象直接访问属性 require
2.4 在协议中定义初始化器init
咱们能够在协议中定义初始化器。而后在对应的枚举,结构体,类中使用它。值得注意的是在类中使用初始化器须要使用required来修饰,结构体和枚举不须要
2.5 mutating的使用
当枚举或者结构体想要在协议定义的方法里面修改捕捉到的外部变量的值时,咱们须要给协议定义的方法添加mutating,记住只有枚举和结构体才须要,类不须要
2.6 当父类和协议有相同的初始化器
咱们须要在使用初始化器的时候在初始化器上添加override和required。