Swift学习笔记

Swift - defer

2022-03-20  本文已影响0人  aven_kang
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

上一篇 下一篇

猜你喜欢

热点阅读