扩展 就是为一个已有的类、结构体、枚举类型或者协议类型添加新功能。这包括在没有权限获取原始源代码的情况下扩展类型的能力(即 逆向建模 )。
extension SomeType {
// 为 SomeType 添加的新功能写到这里
}
1、扩展可以为已有类型添加计算型实例属性和计算型类型属性
1.png
2、扩展可以为已有类型添加新的构造器。这可以让你扩展其它类型,将你自己的定制类型作为其构造器参数,或者提供该类型的原始实现中未提供的额外初始化选项。
⚠️扩展能为类添加新的便利构造器,但是它们不能为类添加新的指定构造器或析构器。指定构造器和析构器必须总是由原始的类实现来提供。
(此例子是根据官方文档写的)
2.png
3、扩展可以为已有类型添加新的实例方法和类型方法。
4、通过扩展添加的实例方法也可以修改该实例本身。结构体和枚举类型中修改 self
或其属性的方法必须将该实例方法标注为 mutating
,正如来自原始实现的可变方法一样。
3.png
5、扩展可以为已有类型添加新下标
6、扩展可以为已有的类、结构体和枚举添加新的嵌套类型
当然还有最重要的协议扩展,我等到时候研究协议的时候,再总结吧
其实内容都是根据官方swift3 写的 只是整理出来这样可以简明扼要,而且我自己也可以仔细研究