Swift学习笔记系列——(21)协议

前端之家收集整理的这篇文章主要介绍了Swift学习笔记系列——(21)协议前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Tags: Swift 学习笔记

发布时间:2015-08-15 @H_502_4@ 修改时间:2015-08-15 @H_502_4@ 作者:Erwin @H_502_4@ 博客地址:技术杂货铺 @H_502_4@ 欢迎转载,转载请注明出处。

Swift学习笔记系列——(21)协议

协议用来做什么?

规定一些特定的要求:方法属性等。

协议的实现有谁来做?

类、结构体和枚举

协议定义

属性要求

实例属性or类型属性

类型属性采用static关键字

属性名字

属性类型

读写or只读

方法要求

实例方法or类型方法

类型方法用static关键字声明

类遵循协议实现类型方法可以用static,也可以用class

变异方法要求

用mutating标记协议中的方法,就是声明这个方法如果由结构体和枚举实现,需要修改自身属性。 @H_502_4@ 类可以协议的实现变异方法,但不要是使用mutating关键字。

构造方法要求

类实现协议要求的构造方法

用指定构造方法和方便构造方法实现都可以 @H_502_4@ 都要用required修饰符标记 @H_502_4@ final构造方法不能再用required了 @H_502_4@ 重写指定构造方法和实现协议要求的构造方法不冲突,这种情况required 和 override 都要有

可失败构造方法要求

协议要求的可失败构造方法的实现不受限制; @H_502_4@ 协议要求的不可失败构造方法可以由不可失败构造方法或者init!构造方法实现。

可选的协议要求

有可选要求的协议用@objc标记 @H_502_4@ 协议可选的内容用optional标记 @H_502_4@ 可选链适用于对协议可选内容的访问

协议继承

只对类开放的协议

协议的组合

将两个以上协议组合成一个临时的组合体,当作类型使用。

协议扩展

针对方法属性的扩展

给协议提供默认的实现

扩展协议,送给实现类型一个协议要求的默认实现,不推辞的话就用了,想推辞就自己再写一套实现。

给协议扩展添加额外的约束

where语句添加约束条件,在这些约束条件下,这种扩展才生效 @H_502_4@ 如果一个实现类型满足多个约束条件,Swift将会使用最特殊的

使用协议

协议作为类型

函数方法和构造方法的参数或者返回值的类型

常量、变量或者属性的类型

数组、字典以及其他集合中元素的类型

是否满足协议的检查

is检查是否满足协议

造型

as?向下造型返回可选值

as!强制向下造型

委托设计模式

协议的实现

通过扩展添加对协议的实现

对类型的扩展中添加对协议实现,结果是类型的实例不论是在扩展前还是扩展后初始化的,都有了协议中的内容。 @H_502_4@ 对于已经实现了协议的类型,需要通过空的扩展,声明实现了协议才可以当作协议类型使用。

本章思维导图

猜你在找的Swift相关文章