現在のキューの最後にブロックを追加して、このブロックがキュー内のすべての既存のアイテムの後に呼び出されるようにすることは可能ですか?
以下のコードは機能していないようです。
- (void)someTaskWillBeDoneOnThisThreadLater {
// The current scope is a delegate method of a library I'm using,
// and unfortunately the required task gets executed after this delegate
// method is called.
// wait for current queue to be done with everything, including the current scope
dispatch_async(dispatch_get_current_queue(), ^{
// After everything is done, then call the main thread
dispatch_async(dispatch_get_main_queue(), ^{
// Perform some task on main thread
});
});
}
編集:
次のコードは問題を修正しましたが、1 秒の遅延に依存したくありません。私はむしろより良い解決策を見つけます。
dispatch_async(dispatch_get_global_queue(0, 0), ^{
dispatch_async(dispatch_get_main_queue(), ^{
sleep(1);
// Perform something on main thread
});
});