Swift学习13:swift中extension使用

张建 lol

前言

swift 中的 扩展Extension,类似 OC 中的 分类Category

作用

  • 扩展可以为 枚举、结构体、类、协议 添加新功能

    添加方法、计算属性、下标、初始化器、嵌套类型、协议等

扩展不能办到的事

  • 不能覆盖原有的功能

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

  • 不能添加存储属性

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

  • 不能向已有的属性添加属性观察值

  • 不能添加父类

    不能扩展后面书写冒号继承父类(Extension Car:Person),因为继承有可能改变原有类的结构

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

  • required 初始化器不能在扩展中,只能在原有类中

实用

  • 扩展方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
extension ViewController {
// MARK:- 实例方法
// 声明无参数无返回值的实例方法
func run() {
print("run");
}

// MARK:类方法
// 声明私有类方法
private class func eat() {
print("eat");
}

// MARK:静态方法(属于特殊的类方法)
static func speak() {
print("speak");
}
}
  • 扩展协议
1
2
3
4
5
6
7
8
9
extension ViewController: UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 5
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return UITableViewCell()
}
}
  • Post title:Swift学习13:swift中extension使用
  • Post author:张建
  • Create time:2023-02-04 11:12:04
  • Post link:https://redefine.ohevan.com/2023/02/04/Swift/Swift学习13:swift中extension使用/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
On this page
Swift学习13:swift中extension使用