Introducing Swift - Extensions

Introducing Swift - Extensions

本文主要记录在学习Swift中【扩展】时的笔记。


扩展允许我们在没有源码的情况下对一个类或者类型进行行为和属性上的扩充或者更改,和OC不同的是,Swift中的扩展没有名字。


能力范围

  1. 添加计算型属性和计算静态属性
  2. 定义实例方法和类型方法
  3. 提供新的构造器
  4. 定义下标
  5. 定义和使用新的嵌套类型
  6. 使一个已有类型符合某个接口

扩展语法

extension SomeClass {
    // add new things ...
}

extension SomeClass: NewProtocol {
    // new protocol implementation ...
}

注意:扩展不能添加存储属性,也不能向已有属性添加属性观测器。


构造器

如果你使用扩展向一个值类型添加一个构造器,该构造器向所有的存储属性提供默认值,而且没有定义任何定制构造器(custom initializers),那么对于来自你的扩展构造器中的值类型,你可以调用默认构造器(default initializers)和成员级构造器(memberwise initializers)。 正如在值类型的构造器授权中描述的,如果你已经把构造器写成值类型原始实现的一部分,上述规则不再适用。

如果你使用扩展提供了一个新的构造器,你依旧有责任保证构造过程能够让所有实例完全初始化。


修改实例方法

通过扩展添加的实例方法也可以修改该实例本身。结构体和枚举类型中修改self或其属性的方法必须将该实例方法标注为mutating,正如来自原始实现的修改方法一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值