例えば以下のような関数があったとします。
func 関数名() {
長い処理
}
このメソッドを使い回した時に特定の箇所ではUI処理が終わるまで待機する必要が出てきた時などに
func 関数名(comp: (() -> Void)? = nil) {
長い処理
// comp!()にすると呼び出さない場合にクラッシュする(後述)
comp?()
}
呼び出し方
override func viewDidLoad() {
// 待つ必要がない場合
// comp!()にしてるとここでクラッシュ
関数名()
// 待ちたい時
関数名 {
//待った後に行いたい処理
}
}
もし以下のような形で書くと
func 関数名(comp: () -> Void) {
}
呼び出し元は明示的にClousreの処理を記述しなければならないです。
override func viewDidLoad() {
// 待つ必要がない場合
// build error
関数名() //Missing argument for parameter 'comp' in call
// 待ちたい時
// build success
関数名 {
}
}
ここは処理によって臨機応変に使い分けていきたいです。
以上。