美文网首页Swift
iOS学习笔记-defer关键字

iOS学习笔记-defer关键字

作者: 酷拼车 | 来源:发表于2022-03-02 14:26 被阅读0次

1.概述

defer关键字是修饰一段函数内任一段代码,使其必须在函数中的其余代码都执行完毕,函数即将结束前调用。可以理解为将延迟执行。

2.细解

2.1 代码写一段
func testMethod_defer() {
  print("函数开始");
  defer {
    print("defer_1");
  }
  defer {
    print("defer_2");
  }
  print("函数结束")
}
2.2 执行结果

函数开始
函数结束
defer_2
defer_1

2.3 分析结果

由打印结果可以发现,两个defer都执行了,都在函数的最后执行的。
defer_2先于defer_1执行,说明如果一个函数中如果包含多个defer的话,会按照自下而上的属性去执行defer。

3.进阶版,异步情况

3.1 代码
func testMethod_deferAsync() {
  print("函数开始");
  defer {
    print("defer_1");
  }
  DispatchQueue.main.asyncAfter(deadline: .now()+1) {
    print("异步执行");
  }
  defer {
    print("defer_2");
  }
  print("函数结束")
}

3.2 执行结果

函数开始
函数结束
defer_2
defer_1
异步执行

3.3 分析结果

由打印结果可以看到,异步代码的执行,不会影响到defer的执行时间。
事实上,defer的执行只和其所在的作用域有关,如果作用域即将被回收,那么会在回收之前执行defer。

相关文章

  • iOS学习笔记-defer关键字

    1.概述 defer关键字是修饰一段函数内任一段代码,使其必须在函数中的其余代码都执行完毕,函数即将结束前调用。可...

  • iOS学习笔记-defer关键字

    1.概述 defer关键字是修饰一段函数内任一段代码,使其必须在函数中的其余代码都执行完毕,函数即将结束前调用。可...

  • 学习笔记-defer关键字

    一.引 上述代码 在RxSwift里DisposeBag.swift 文件的第50行,函数作用不管Rx里它是什么作...

  • Go语言defer关键字

    Go语言defer关键字 defer关键字用于延缓函数的执行 只需要在调用普通函数或方法前加上关键字defer,就...

  • Golang学习笔记-defer关键字学习

    defer学习 很多现代的变成语言中都会有defer关键字,Go语言的defer会在当前函数或是方法返回之前执行传...

  • swift  defer  关键字 推迟执行

    Swift defer 关键字 延迟执行

  • Golang-defer关键字

    defer关键字 defer是Golang中一个非常重要的关键字,主要是用于注册延迟调用,这些调用在return时...

  • Go语言 defer

    参考文章:深入理解Go语言 defer用于资源的释放,会在函数返回之前进行调用 defer关键字的实现跟go关键字...

  • go defer理解

    golang的defer是怎么工作的?defer在golang里是一个很基础的关键字,在函数内部使用defer声明...

  • Go语言基础(二)

    目录 关键字 defer go的defer用法范例[https://www.jianshu.com/p/7ada9...

网友评论

    本文标题:iOS学习笔记-defer关键字

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