ブロック (完了ブロック) で実行されている単純なコードがいくつかあります。完了ブロックでは、ブロック内のプロセスが FALSE を返した場合に UIAlertView を表示したいと考えています。ベスト プラクティスとして、バックグラウンド スレッドで UI メソッドを呼び出すことは想定されていないため、dispatch_get_main_queue を使用して UIAlertView を表示しています。UIAlert ビューのキャンセル ボタンを押したときに、wait_fences: failed to receive reply: 10004003 エラー メッセージが表示されることを除いて、これは正常に機能します。
コードは以下です。他にこれを行う方法がわかりません。私の知る限り、コードは正しいように見え、機能するはずですが、明らかに問題があります。別の目が問題を特定するのに役立つことを望んでいました.
__block bool theResult;
[self.mbProgressHUD showAnimated:YES whileExecutingBlock:^{
theResult = [someClass someMethodThatReturnsTRUEorFALSE];
} completionBlock:^{
[self.mbProgressHUD removeFromSuperview];
if (theResult) {
dispatch_async(dispatch_get_main_queue(), ^{
UIAlertView *theAlert....
[theAlert show];
});
};
}];
UIAlert で [OK] ボタンが選択されている場合を除いて、すべて正常に動作しているようです。wait_fences: failed to receive reply: 100040003 エラー メッセージが表示されます。
どんな助けでも大歓迎です。