2012-03-18 8 views
21

最近、私はitun​​es connectからクラッシュレポートを受け取りました。実際には、何千ものユーザーから得た唯一のクラッシュレポートです。これはiPod4,1のデバイスです。興味深い部分は、次のとおりUIKit:[UIViewController mutableChildViewControllers]がクラッシュしますか?

Date/Time:  2012-02-27 22:53:27.596 +0800 
OS Version:  iPhone OS 5.0.1 (9A405) 
Report Version: 104 

Exception Type: EXC_CRASH (SIGABRT) 
Exception Codes: 0x00000000, 0x00000000 
Crashed Thread: 0 

Last Exception Backtrace: 
0 CoreFoundation     0x338958bf __exceptionPreprocess + 163 
1 libobjc.A.dylib     0x303891e5 objc_exception_throw + 33 
2 UIKit       0x31259749 -[UIViewController mutableChildViewControllers] + 1 
3 UIKit       0x31259349 -[UINavigationController pushViewController:animated:] + 37 
4 MyApp       0x000081e5 -[MyListController tableView:didSelectRowAtIndexPath:] (MyListController.m:207) 
5 UIKit       0x312d3565 -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 945 
6 UIKit       0x3134bce7 -[UITableView _userSelectRowAtPendingSelectionIndexPath:] + 159 

テーブルビューの行が選択された場合、クラッシュが発生したと思われ、そして新しいビューコントローラがナビゲーションに押し込まれます。私のコードによれば、新しいView Controllerはすでに作成されているので、クラッシュはUINavigationControllerで発生しました。

私が書いたコードの誤りのようには見えません。私はこれについて正しいのだろうか?この問題をどのようにデバッグするのですか?

+0

私はこれまで運がないと同じクラッシュ(iOS 5.1を除く)を探っている。 – Jason

+0

@JasonもiPodに起こっていますか?私は低メモリ警告に関連する別のクラッシュレポートもiPod上で一度しか発生していない。 –

+2

それは私の場合のiPadです...これまでどんな解決策も見つけましたか? – Jason

答えて

-1

私はそれを得ました!私も同じ問題を抱えていました。あなたのコードでは、ボタンが押されたように見えて、クラッシュが発生します!ここで

Last Exception Backtrace: 
0 CoreFoundation     0x338958bf __exceptionPreprocess + 163 
1 libobjc.A.dylib     0x303891e5 objc_exception_throw + 33 
2 UIKit       0x31259749 -[UIViewController mutableChildViewControllers] + 1 
3 UIKit       0x31259349 -[UINavigationController pushViewController:animated:] + 37 
4 MyApp       0x000081e5 -[MyListController tableView:didSelectRowAtIndexPath:] (MyListController.m:207) 
5 UIKit       0x312d3565 -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 945 
6 UIKit       0x3134bce7 -[UITableView _userSelectRowAtPendingSelectionIndexPath:] + 159 

が私の提案です:SIGABRTを解決する

2つのこと:

1)SIGABRTが捕捉されない実行時例外のために発生します。これが起こると、例外の正確な理由を説明するデバッガコンソールまたはデバイスコンソールに書き込まれた情報があります。あなたは私たちにこのテキストを表示していません。それは「アプリケーションが終了したために終了します...」を開始します。

私たちにこのテキストを表示してください。

2)デバッガでアプリケーションを実行し、例外スロー機能でブレークポイントを設定すると、例外がスローされたときにアプリケーションが停止し、通常はそれを把握するのに十分です。デバッガブレークポイントペインに移動します。左下には、クリックすると例外ブレークポイントを設定できるコントロールがあります。

+2

うーん...私はあなたが私の質問を誤解しているのを恐れている。クラッシュレポートはiTunes接続から取得され、そのままの状態です。コンソールへのアクセスはありません。そして、私はボタンが関わっていないと言わなければなりません、これはリストビューとセルです。あなたも同様の問題に遭遇したとおっしゃいましたが、あなたが問題にどのように対処したかは正確には言いませんでした。 –

+0

今私は別の方法でそれを見なければなりません... itunes接続?おそらく、それはvoidのエラーの原因です...多分...私はXcodeのお尻ではありません。私は学習しています。フォーラムにはヒントが必要です! – Noah

+0

よく彼は彼のポイント#1が正しいですが、私はiTunesがログを追加しないと思いますか?...私はindexOutOfBoundsに投票するでしょう:) - あなたはあなたのアプリケーションのどこにでも手動でviewControllersスタックを修正していますか? –

1

ユーザーがメモリ不足の警告を受けたようです。 UINavigationControllerはビューを保持しますが、タブ付きビューは非表示のビューをポップします。しかし、低メモリコードはまだ呼び出されています。その場所に達する前に、警告ハンドラを確認してください。また、ハードウェアメニューの下にある「シミュレーションメモリ警告」をすべての入り口と出口で押してテストします。 http://forums.macrumors.com/showthread.php?t=876419は、あなたがいないときに起こることの混乱を示しています。 iphonedevsdk.com/forum/iphone-sdk-development/14225-uinavigationcontrollers-and-didreceivememorywarning.htmlこれを処理する方法については素晴らしいコメントなどがあります。

あなたのビューコントローラが何かを読み込んでメモリ警告が発生しました。大量のアイテムを積み重ねるだけでは済ませられないようにし、アプリを維持するために必要な数のリークを除去するようにアプリがプロファイルされていることを確認します。

上記はマークではありませんが、関連する必要があります。

最後に、ARCは使用しないでください。スーパークラスの関数を呼び出すことを許さないものは、うまくいきません。あなたがCore Foundationのブリッジを理解しているなら、おそらくARCは問題ありません。私は個人的にそれをすべての費用をかけて回避すると、b/cメモリはAppleの屋根裏で無作為に処理されます。私は彼らのものがあまりにも多くの方法を失敗するのを見た。

+0

ポインタありがとうございます。実際、メモリ警告シミュレーションではこのクラッシュは発生しません。私のアプリは非常に小さなメモリフットプリントを持っています。また、私が前回プロファイリングしたときのRAMの使用量はわずか6MBでした。私はARCを使用します。特定のメモリが遅くリリースされる可能性があります。しかし、それは24MBの障壁を打つのとは違う。 –

+0

他のもののb/cがちょうど壊れたまれなケースのような音、またはユーザーがそれを行うことができる小さな部分でした。起こる、heh。あなたのSharkツールがメモリが不足していると言っても、それが気になることはありません。 devと幸運を祈っています。他のコメントにも優れたログツールを使用しています –

関連する問題