が、やり方がわからない。
自力でやってみるとこんな感じでできることはできたのだが・・・。
swift
//非同期処理が完了したらtrueになる変数を用意
var isDone:Bool = false
//BoltsをインストールしてcontinueWithSuccessBlockを使用
HidoukiFunc().continueWithSuccessBlock {(task) in
//HidoukiFuncの実行が完了した際
isDone = true
return nil
}
//isDoneがtrueになるのを待つ
while isDone == false {
usleep(10)
}
こんなの絶対おかしい。
もっと賢い方法があるはず。
わかったら追記します。
追記:
わかりました。
swift
//セマフォを用意する
let semaphore:dispatch_semaphore_t = dispatch_semaphore_create(0)
//BoltsをインストールしてcontinueWithSuccessBlockを使用
HidoukiFunc().continueWithSuccessBlock {(task) in
//HidoukiFuncの実行が完了した際
//セマフォを+1する(-1から0へ)
dispatch_semaphore_signal(semaphore)
return nil
}
//セマフォを-1する(セマフォが0になるまで処理が進まないのでここでウェイトということになる)
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER)
変更(2015/08/10):
説明に自信がない箇所を削除