5

私はiPadアプリに取り組んでいます。クラッシュすることもありますが(理由はわかっています)、クラッシュしてもアプリが閉じないのはなぜですか?アプリがクラッシュすると、コンソールでクラッシュに関連するエラーが発生しましたが、アプリは閉じません。マルチタスキング バーにも表示されます (ホーム ボタンを 2 回押すと表示されます)。私はこれのためのある種の設定があるのだろうかと思っていますか?またはこれは正常な動作ですか?

4

3 に答える 3

6

Xcodeからアプリを実行している場合、デバッガーは引き続き接続されるため、クラッシュによってプロセスが終了することはありません。Xcodeデバッガーを使用して、スタックの確認、変数の検査などを行うことができます。Xcodeでアプリを停止した場合にのみ、プロセスは完全に終了します。

于 2012-05-30T09:47:31.940 に答える
3

@マイク・ウェラーは正しいです。

デバッガーはクラッシュが発生したコードのポイントで停止するように設計されているため、クラッシュ時にアプリを閉じないのは、シミュレーターの一般的な動作です (明らかな理由により!)。

あなたの満足のためにデバイスでそれをチェックしたい場合。デバイスを接続し、xcode 経由でアプリを 1 回実行します。アプリを閉じます (xcode で停止します)。次に、デバイスを取り外します。

アプリは、他の通常のアプリと同様にデバイスにインストールされます。このアプリを実行し、クラッシュの原因となるあらゆることを行います。アプリが閉じて、iPhone のスプリングボード画面に戻ります。

マルチタスクバーに表示されるアプリについては、マルチタスクバーにアプリが存在しても、それがまだ実行されていることを意味しないことは既にここで述べました。これは、ios と android のアーキテクチャの重要な違いです。

マルチタスク バーはタスク マネージャーではありません。iOS の哲学では、ユーザーはアプリが実行されているかどうかを知る必要はありません。過去に実行したアプリを知る必要があるだけです。

于 2012-05-30T11:32:12.763 に答える
0

閉じない理由は、おそらくアプリが実際にクラッシュしていないためです。

表示されている出力がログに出力される例外である可能性はありますか? 印刷後にこの例外をキャッチしている可能性がありますか?

このような:

@try {
   [test characterAtIndex:6];
}
@catch (NSException * e) {
   NSLog(@"Exception: %@", e);
}

例外がキャッチされるため、上記のコードはクラッシュしません。例外をキャッチすることは、アプリがクラッシュする必要がないように問題を処理したことをプラットフォームに伝えることです。

他にもいろいろな理由が考えられますが、ご提供いただいた情報から、これが私の最善の推測です。あなたが見ているログプリントを投稿することができます.それは確かにより良い手がかりを与えるでしょう...

于 2012-05-30T09:43:10.023 に答える