【每天学一点】Swift-多个defer的执行顺序(2021.2.23)

1,407 阅读1分钟

今天好奇了下Swift中多个defer和嵌套defer会怎样执行,遂写了个demo, 验证了下

class DeferModel {
    static func test() {
        defer {
            print("defer1 begin")
            
            defer {
                print("in defer 1")
            }
            
            print("defer1 end")
        }
        
        defer {
            print("defer2 begin")
            
            defer {
                print("in defer 2")
            }
            
            print("defer2 end")
        }
        
        print("do Sth in defer demo")
        
    }
}

// 输出:
do Sth in defer demo
defer2 begin
defer2 end
in defer 2
defer1 begin
defer1 end
in defer 1

结论

  1. 多个defer先执行后面的,再执行前面的
  2. defer中的defer可以跟普通的作用域一样,先执行完普通逻辑最后才执行defer