ViewController
1(VC1)と2(VC2)の2つのビューコントローラーがあります。VC2 には、戻るボタンと完了ボタンがあります。[戻る] ボタンをクリックすると VC1 に直接移動し、完了すると API 呼び出しが行われ、応答を受け取るとアラート ビューが表示され、[OK] をクリックすると VC1 に戻ります。API呼び出しを行うと、読み込みバーが表示され、応答を受け取ると消え、AlertView
. しかし、ローディングが消えてAlertView
、戻るをクリックしてビューが VC1 に変わったときにポップアップが表示される瞬間に、アラートが VC1 に表示され、クラッシュが発生します。
これはまれなケースですが、意図的に試行するユーザーはいませんが、戻るボタンを無効にせずにクラッシュを管理できるかどうか疑問に思っていました. ViewController
非同期呼び出しを行っている場合や、ユーザーが応答を待っている間に UI を使用することが許可されている場合、あるエラー アラートが別のエラー アラートに表示される可能性がある場合など、他のインスタンスが存在する可能性があると思います。アラートが参照しているデリゲートは、前のビュー コントローラーのデリゲートであるためです。この種のクラッシュを効率的に処理する方法はありますか?
//Alert View sample
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[[message objectAtIndex:1] capitalizedString] message:[message objectAtIndex:0] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil] ;
[alert setTag:701];
[alert show];
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if ([alertView tag] == 701)
if (buttonIndex == 0)
{
[self.navigationController popViewControllerAnimated:YES];
}
}