deferはスコープを出る直前に実行できるコードを指定できます。Finally的な使い方ができます。Unsafeなallocate()をdeallocate()する場合に便利です。
public func test() -> Void{ defer { print("Start defer") } print("Start Function") }
上記コード例の場合結果は下のようになります。
public func test() -> Void{ defer { print("Start defer 1") } defer { print("Start defer 2") } print("Start Function") }
上記コードのようにdeferを複数いれることもできます。
この場合の結果は下記です。
Start Function Start defer 2 Start defer 1
“Start defer 1”が一番最後に実行されました。
deferは、for などのスコープ内で利用することもできます。
public func test() -> Void{ for i in [1,2,3] { defer { print("Statement defer \(i)") } print("Statement \(i)") } defer { print("Function defer") } print("Function Start") }
上記コードを実行した場合下記のような結果でした。