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

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