扩展
扩展为现有的类,结构体,枚举和协议添加新功能.
扩展可以向一个类型添加新的方法,但是不能重写已有的方法.
扩展跟OC的分类有点相似,但是Swift的扩展是没有名字的.
extension 关键字
形如:
1 | extension SomeType{ |
扩展计算属性
扩展可以添加计算属性,但是不能添加存储属性,也不能为已有的属性添加属性观察者.
1 | class Tuesday: NSObject { |
扩展新的初始化
1 | //原有的初始化 |
扩展新的实例方法和类方法
1 | class Tuesday: NSObject { |
异变方法
增加了扩展的实例方法仍可以修改(或异变)实例本身.结构体和枚举类型方法在修改 self 或本身的属性时必须标记实例方法为 mutating,和原本实现的异变方法一样.
下面的例子为 Swift 的 Int 类型添加了一个新的异变方法 square ,以表示原值的平方:
1 | extension Int { |
扩展协议
协议扩展能添加已经实现的属性和方法,但是不能为协议添加新的必须要实现的属性和方法.
1 | extension UITextFieldDelegate{ |
扩展类遵循协议
扩展类遵循多个协议.
1 | class People: NSObject { |
其他扩展
定义下标
定义和使用新的内嵌类型
THE END