メソッドの引数にブロック関数宣言する

String引数をひとつ取るブロック関数。

func method01(callback: ((result: String) -> Void)) {
    // Do something.
    if isOK {
        callback(result: "success")
    } else {
        callback(result: "failure")
    }
}

書式はこのようになります。

ラベル名: ( (引数1, 引数2...) -> 戻り値 )

呼び出す時はこのように書きます。

obj.method01({ (result: String) in
    if result == "success" {
        // Do something
    }
})

書式はこのようになります。

{ (引数1, 引数2...) -> 戻り値 in
   // 実装
}

typealiasで宣言する

同じ引数・戻り値のブロック関数を複数箇所で使う時は、typealiasで宣言すると良いでしょう。

typealias BlockFunc01 = (name: String, age: Int) -> Bool
func method02(callback: BlockFunc01) {
    callback(name: "name01", age: 25)
}