Swift転職なら=>【LevTech】
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

HOME > deferってどう使う?金魚のフン制御構文

金魚のフン制御構文「defer」

先日サンプルコードを読んでいたらdeferという新しいワードが。Swift2から新しくでてきたGo言語でも 利用されているdeferという処理があるようですので解説です。これは処理の最後に何かを実施するJavaやC#でのtry..catch..finallyの finally部分と似た処理になります。つまるところエラーが発生しようが発生しまいが「処理のあとで何かしたい」時に利用する金魚のフンのような処理です。

サンプル画像

参考:Swift 2のdefer文
参考:The defer keyword in Swift 2: try/finally done right
参考:新しい制御構文の追加
参考:Swiftでdeinitまで処理をdeferする

やってみた

百聞は一見にしかずですのでやってみましょう。

関数の中で実行する


class ViewController: UIViewController {
    
    override func viewDidAppear(animated: Bool) {
        
        print("ステップ 1")
        testDefer()
        print("ステップ 4")    }
    
    
    func testDefer() {
        print("ステップ 2")
        defer { print("金魚のフンです") }
        print("ステップ 3")
    }

}

上の処理を実行すると、、、、以下のような結果に


ステップ 1
ステップ 2
ステップ 3
金魚のフンです
ステップ 4

上のソースコードならステップ2の後に実行されそうですが関数の最後まで処理してから 金魚の糞deferを実行しているのがわかります。

do の中でつかってみる


        print("ステップ 1")
        
        do {
            defer { print("金魚のフン") }
            print("ステップ 2")
            print("ステップ 3")
        }
        
        print("ステップ 4")
        

この場合はdoで囲った箇所の最後に実行。柔軟性がありますね!


ステップ 1
ステップ 2
ステップ 3
金魚のフンです
ステップ 4

for の中でつかってみる


        for i in 1...10 {
            print ("IN \(i)")
            defer { print ("金魚のフン \(i)") }
            print ("OUT \(i)")
        }
        

これなんかだと、、、、以下の様になります。


IN 1
OUT 1
金魚のフン 1
IN 2
OUT 2
金魚のフン 2
IN 3
OUT 3
金魚のフン 3
...
金魚のフン 9
IN 10
OUT 10
金魚のフン 10


いろいろ柔軟にも使えるようですので試してみてください!

まとめ

使えそうな制御構文です!Playgroundではdeferが確認できませんでしたので注意です。

↓こんな記事もありますよ!

Facebook SDKを試してみる#3(再調査)

SDKのインストーラが起動しても結局frameworkをドラッグドロップしなちゃ追加できない、面倒臭い、と発言してしまったのですが、 どうやらSDKをインストーラにてインストールした場合(SDK4.1)は、importするだけでどうやらSDKが追加できるとかなんとか。

Pre特殊文字難民

記事を書いている時によくつまずくことがあります。preでコードを表示する際に、 カッコを使うと文章が消えてしまったり、ドルマークの変数が表示できなかったり。その度に検索して探しているのでサイトの中に入れてしまいます。 以前のバックスラッシュもそうですが、こういった特殊文字難民対策のページにしておきます。

SQLiteを使いたい。ラッパーを検証してみる。(#2)

前回の記事でSQLiteのラッパのRMDB, SWiftData,SQLite.swiftの検証をトライしまいたが、時間の問題で頓挫してしまいましたので続きです。 。ある程度準備が完了しましたので、それぞれのサンプルを動かしてみてみようと思います。InsertとSelectとインストール感を比較してみます。
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!