美文网首页Swift
Swift中defer的使用

Swift中defer的使用

作者: 萤火驻守心间 | 来源:发表于2022-02-28 14:22 被阅读0次

defer:defer中的代码将延迟至当前作用域结束之前执行
注意:必须有执行到defer,才会触发defer。如果提前return、抛异常或通过判断过滤了导致没有走defer这一行,就不会触发。

var a = 0
    func test() {
        a = 0
        defer{
            a = 1
        }
        a = 2
    }
override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .white
        test()
        print("a =",a) 
    }

test()执行顺序为:a=0 -> a=2 -> a=1
所以打印:a = 1

常见使用场景:
1、do-catch

func Person() {
      defer {
        print("study")
      }
      do {
          throw err.msg("123")
        print("eat")
      } catch {
        print("run")
      }
    }
func Person() {
      defer {
        print("study")
      }
      do {
          throw err.msg("123")
        print("eat")
      } catch {
        print("run")
      }
    }

Person()调用顺序:先执行do catch代码块,,再执行defer
打印结果:
run
study

2、多个defer,执行顺序与定义顺序相反

func fn1() {
        print("fn1")
    }
    func fn2() {
        print("fn2")
    }
    func fn3() {
        print("fn3")
    }
    //执行顺序与定义顺序相反
    func test() {
        defer {fn1()}
        defer {fn2()}
        defer {fn3()}
        
    }

test()
打印结果:
fn3
fn2
fn1

相关文章

  • 读喵神文章有感

    昨天读了喵神的《关于 Swift defer 的正确使用》,对defer有了新的认识。之前在自学swift中也看到...

  • Swift中defer的使用

    defer:defer中的代码将延迟至当前作用域结束之前执行注意:必须有执行到defer,才会触发defer。如果...

  • Swift中defer的使用

    defer语句在代码块(方法、闭包等,可以理解为大括号括起来的代码)作用域退出之前执行。一个代码块允许有多个def...

  • swift-defer

    来源自喵神的博客:关于 Swift defer 的正确使用 defer简介 从语言设计上来说,defer 的目的就...

  • Swift 中 defer 的介绍与使用场景

    Swift 中 defer 的介绍与使用场景 用defer语句在即将离开当前代码块时执行一系列语句。该语句让你能执...

  • Swift之Defer

    Swift2.0中加入了defer新语法声明。defer译为延缓、推迟之意。那么在Swift2.0中它将被应用于什...

  • 用OC写一个defer

    defer defer是Swift中比较常用的一种语法,defer中的代码将会在当前的代码块结束之后调用。正如文档...

  • swift中的defer使用场景

    延迟 个人理解类似闭包,会延迟执行,但只要执行了defer定义的代码就一定会执行。 执行顺序 defer的位置越靠...

  • [Swift2.0系列]Defer/Guard 基础语法

    2018-Read-Record 记录我的2018学习历程 1.Defer Swift2.0中加入了defer新语...

  • Swift defer & guard

    2019-01-29Swift defer 简单解答 1. defer是什么? The defer keyword...

网友评论

    本文标题:Swift中defer的使用

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