簡介

defer就是 return/block 之前執行,無論函數是從哪個分支 return 的,或是單一個for每個index 結束前都會執行一次
任意 scope 都可以有 defer
只要有{ }就可以塞

呼叫

override func viewDidLoad() {
    super.viewDidLoad()
    deferTest()
}

for+defer

每個index結束時都會打印defer
才會換下一個index

func deferTest(){
    for i in 0...10 {
        defer {
            print("結束")
        }
        print("執行\(i)")
    }
}

普通func

結束時也會執行defer

func deferTest(){
    defer {
        print("結束")
    }
    print("執行")
}

defer執行順序

普通執行事由上到下
defer會從最下面的執行到最上面的
如果有多個defer的話

func deferTest(){
    print("1")
    defer {
        print("6")
    }
    print("2")
    defer {
        print("5")
    }
    print("3")
    defer {
        print("4")
    }
}


Categorized in:

Tagged in:

, , ,