美文网首页
Swift defer

Swift defer

作者: 赵哥窟 | 来源:发表于2020-08-04 17:57 被阅读0次

defer 里的代码会在函数 return 之前执行,无论函数是从哪个分支 return的,包括有try catch的情况。通俗点讲就是defer会在当前作用域结束前调用。

defer 使用场景
执行完查询后关闭数据库连接

func someQuery() -> ([Result], [Result]){
    let db = DBOpen("xxx")
    defer {
        db.close()
    }
    guard results1 = db.query("query1") else {
        return nil
    }
    guard results2 = db.query("query2") else {
        return nil
    }
    return (results1, results2)
}

需要注意的是, 如果有多个 defer, 那么后加入的先执行

func someDeferFunction() {
    defer {
        print("\(#function)-end-1-1")
        print("\(#function)-end-1-2")
    }
    defer {
        print("\(#function)-end-2-1")
        print("\(#function)-end-2-2")
    }
    if true {
        defer {
            print("if defer")
        }
        print("if end")
    }
    print("function end")
}
someDeferFunction()
// 输出
// if end
// if defer
// function end
// someDeferFunction()-end-2-1
// someDeferFunction()-end-2-2
// someDeferFunction()-end-1-1
// someDeferFunction()-end-1-2

相关文章

  • Swift defer & guard

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

  • Objective-C中实现Swift中的defer

    Swift中有一个defer A defer statement is used for executing co...

  • 读喵神文章有感

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

  • swift  defer  关键字 推迟执行

    Swift defer 关键字 延迟执行

  • swift-defer

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

  • Swift之Defer

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

  • 用OC写一个defer

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

  • Swift defer

    defer 里的代码会在函数 return 之前执行,无论函数是从哪个分支 return的,包括有try catc...

  • Swift defer

    Swift 关键字 defer 字面意思是推迟, 那什么时候执行呢? 在函数即将结束(return 之前). 具体...

  • Swift - defer

    在这个processFile函数中,因为涉及了文件操作,是需要关闭文件的,而在processFile这个函数的处理...

网友评论

      本文标题:Swift defer

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