18

最近 App Store に提出したアプリがまだ承認されていません。その間、Xcode 4.5 をダウンロードし、iPhone 6.0 シミュレーターでアプリをテストしました。

ただし、を表示しようとすると、アプリがエラーでオンラインでUIAlertViewクラッシュします。iPhone 5.1 Simulator で問題なく動作します。 [myAlertView show]EXC_BAD_ACCESS

これが私のコードです:

UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"Are you sure?" delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil];
[myAlertView show];  

それは正常ですか?私のコードで何が間違っていますか?

また、私のアプリを Apple に再送信する必要があると思いますか? (アドバイスをお願いします)

前もって感謝します。

編集: iOS 6 がクラッシュしたため、Apple はアプリを拒否しました。

4

2 に答える 2

27

このメソッドを削除して、別のメソッドを使用します。

 [myAlertView show];  

この方法を試してください:

 [myAlertView performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:YES];
于 2013-01-20T01:56:24.833 に答える
20

この関連する質問を参照してください: バックグラウンド スレッドから表示され、デリゲートなしで表示される UIAlertView は EXC_BAD_ACCESS を作成します

ユーザー入力と UI 呼び出しは、メイン スレッドから行う必要があります。それらの多くは、他のスレッドで「ほとんど」動作しますが、クラッシュすることもあります。デバイスでは、シミュレーターとは異なる方法で (多かれ少なかれ頻繁に) クラッシュする可能性が高くなりますが、Apple が iOS6 でその違いに影響を与える変更を行った可能性があります。

2 番目の質問には、はい、特にデバイスでこれを再現できる場合は、問題が修正され次第、確認のために更新されたバイナリをアップロードします (デバイスで再現することを強くお勧めします)。 . そうしないと、A) ユーザーが嫌うバグで承認されるか、B) 却下されて、さらに長い遅延と精査が必要になる可能性があります。レビューが完了する前に更新されたバイナリを送信すると、知る限り「最前線」に置かれますが、代替案よりは優れています。

于 2012-09-13T15:07:13.720 に答える