0

ViewControllers をルート ナビゲーション コントローラーにプッシュしてビュー階層を作成するネイティブ iOS アプリがあります。

たまにアプリが突然消えてしまうことがあります。アプリは iPad のタスク バー内にまだ存在しているため、クラッシュしたようには見えません。しかし、1 つ以上のビューがアンロードされ、ユーザーがホームページに戻ったようです。アプリは引き続き iPad タスクバーに表示され、タスクバーのアイコンをタップして再度開くことができます。

UIViews はこのように消えますか? これをデバッグするにはどうすればよいですか?

どうもありがとう。

4

2 に答える 2

1

アプリは iPad のタスク バー内にまだ存在しているため、クラッシュしたようには見えません。

それは本当に何も教えてくれません。あなたが説明する「タスクバー」は、現在実行中のプロセスのリストではありません。最近使用したアプリのリストです。リストされたアプリは、現在実行されている場合と実行されていない場合があります。

アプリがクラッシュしたかどうかを確認するには、Xcode オーガナイザーでデバイスを選択し、デバイス ログのリストを確認します。アプリがクラッシュした場合、最新のログ ファイルが [プロセス] 列の下にアプリ名と共に表示されます。そのログを選択して見てください。次のようなものが表示される場合があります。

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x80938733
Crashed Thread:  0

ログの残りの部分は、クラッシュ時に各スレッドが何をしていたかについての情報を提供します。

また、最新のログがアプリのものではなく、[プロセス] 列と [タイプ] 列の下に としてリストされている場合もありますUnknown/Unknown。ログには、プロセスのリストと、それぞれが使用していたメモリ ページの数のみが含まれます。リストでアプリを探すと、次のような行が見つかる場合があります。

MyApplication <23b...9af>   168389   168389  [per-process-limit] (frontmost) (resume)

これが表示された場合、アプリはクラッシュしていません。メモリを使いすぎたため、オペレーティング システムによって強制終了されました。これは、Instruments を使用してアプリのメモリ使用量をプロファイリングし、非常に大きな割り当てやメモリ リークを探す良い機会です。

于 2013-06-20T16:44:27.980 に答える
0

iOS アプリを非表示にしたり最小化したりすることはできないため、アプリを使用していて、突然、すべてのアプリが一覧表示されているホーム画面に移動すると、アプリがクラッシュします。

アプリケーションのインストールとテストに Xcode を使用している場合は、[オーガナイザー] -> [デバイス] に移動してデバイスを選択し、デバイス ログをチェックして、アプリがクラッシュしたときに何が起こったかを確認します。

これはもちろん、アプリがクラッシュしたときにコンソール/デバッグ領域に何も表示されない場合です。

アプリで ARC を使用しておらず、アプリがクラッシュしたときにデバッグ領域に何も表示されていない場合は、低メモリ クラッシュであるに違いありません。この種のクラッシュは通常、Xcode にログを記録する時間を与えません。エラーですが、これはデバイス ログで確認できます。その場合は、アプリで ARC に切り替えて使用することをお勧めします。

于 2013-06-20T16:22:00.910 に答える