Swift Extension(扩展)

作者: 西风那个吹呀吹 | 来源:发表于2020-09-30 13:06 被阅读0次
  • Swift中的扩展,类似OC中的分类Category
  • 扩展可以为枚举、结构体、类、协议添加新功能

可以添加方法、计算属性、下标、(便捷)初始化器、嵌套类型、协议等

  • 扩展不能办到的事情
  1. 不能覆盖原有的功能

OC中是允许覆盖的,但Swift是安全的,是不允许覆盖的

  1. 不能添加存储属性

因为存储属性会改变内存结构,但扩展是不允许改变原有结构的

  1. 不能向已有的属性添加属性观察器
  2. 不能添加父类

也就是不能在扩展后面书写冒号继承父类(Extension Car : Person),因为继承有可能改变原有类的内存结构,父类的成员变量将来在原有类内存中也有份,内存结构就会改变,所以,不能继承,也就不能添加父类

  1. 不能添加指定初始化器,不能添加反初始化器

对于Class类来说,指定初始化器是非常重要的,不能额外通过扩展去添加,但可以添加便捷初始化器。
若是Struct结构体类型,不存在指定初始化器和便捷初始化器,没有这概念,也就可以通过扩展添加成员初始化器。
反初始化器是只能写在原有类里面的,只能有一个,不能在扩展中添加。

  1. required初始化器不能写在扩展中,必须在原有类中

实用案例:

//添加数组下标越界处理的扩展方法
extension Array {
    subscript(nullable idx: Int) ->Element? {
        if (startIndex ..< endIndex).contains(idx) {
            return self[idx]
        }
        return nil
    }
}

(未完待续)

相关文章

  • Swift 命名空间形式扩展的理解和问题探讨

    先从 Swift 协议扩展的语法说起 注:协议扩展 Protocol extension: Swift 1.x 中...

  • Swift(九)协议和扩展

    更新:2018.05.24 整理了一下demo:SwiftDemo 扩展(Extension) Swift中,扩展...

  • Swift5.0 - day7-扩展、访问控制、内存管理

    一、扩展(Extension) 1.1、扩展介绍Swift中的扩展,有点类似于OC中的分类(Category)扩展...

  • Swift Extension(扩展)

    Swift中的扩展,类似OC中的分类Category 扩展可以为枚举、结构体、类、协议添加新功能 可以添加方法、计...

  • swift 扩展(extension)

    扩展(Extension)用于为已存在的类、结构题或枚举等类型添加新的功能。可以扩展计算型属性、构造函数、方法、下...

  • Swift 扩展(Extension)

    扩展(Extension) 扩展:就是为一个已有的类、结构体、枚举类型或者协议类型添加新功能。这包括在没有权限获取...

  • Swift 扩展:Extension

    (转载自http://letsswift.com/2014/06/extensions/) 扩展就是向一个已有的类...

  • iOS-Swift-扩展

    1. 扩展(Extension) Swift中的扩展,有点类似于OC中的分类(Category) 扩展可以为枚举、...

  • [Swift5.1] 18-扩展

    扩展(Extension) Swift中的扩展,有点类似于OC中的分类(Category) 扩展可以为枚举、结构体...

  • 扩展

    扩展(Extension) Swift中的扩展,有点类似于OC中的分类(Category) 扩展可以为枚举、结构体...

网友评论

    本文标题:Swift Extension(扩展)

    本文链接:https://www.haomeiwen.com/subject/jwpbxxtx.html