私は2つの非同期メソッドを実行しています(参照についてはこのSOスレッドを参照してください)。
私がこのシナリオを持っている場合を除いて、それは完璧に機能しています。いずれかの方法でエラーが発生した場合、ユーザーにこの情報を表示するので、ブロックでエラーをチェックして次のようにします。
if(error) {
int64_t delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), {
// Show a popup for 2.0 seconds alerting the user of the error
});
}
これは問題なく機能します。ただし、これらの非同期操作の両方にエラーがある場合に問題が発生します。終了する最初のメソッドは、おそらくわずか0.5秒間エラーを表示し、次に2番目の非同期操作は2.0秒間エラーを表示します(すでにエラーメッセージが表示されていることを考慮していません)。
したがって、すでにエラーメッセージが表示されているかどうかを確認し、そのエラーメッセージが消えるのを待って(2.0秒)、すぐに2番目のエラーメッセージを表示するプロセスが必要です。