Swift - defer

作者: aven_kang | 来源:发表于2022-03-20 11:37 被阅读0次
func open(_ fileName:String) -> Int {
    return 0
}
func close(_ fileName:String) -> Int {
    return 0
}

func processFile(_ fileName:String) throws {
    
    let file = open(fileName)
    
    defer {
        close(fileName)
    }
    
    var num1 = 10
    var num2 = 0
//    var result = num1/num2
}

在这个processFile函数中,因为涉及了文件操作,是需要关闭文件的,而在processFile这个函数的处理过程中,一般是最后才去关闭文件的,如果在过程中,就出现问题了,抛出异常到了外层函数去处理,那么文件是没有关闭的,可能会出现内存问题,但是如果使用了defer,这个函数的作用就是在processFile这个函数结束前,无论如何都会执行,就保证了安全。

func fn1() {}
func fn2() {}
func test() {
    defer { fn1() }
    defer { fn2() }
}

在test中,执行的顺序是先执行fn2,再执行fn1

相关文章

  • 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/upsqrrtx.html