0

UIViewControllerモーダルポップオーバーとして表示しています。そのビューの使用が完了すると、次の特定の場所に移動しますUINavigationBar

[[appDelegate.homeViewController navigationController] popToViewController:[[appDelegate.homeViewController navigationController ].viewControllers objectAtIndex:2] animated:YES];

モーダルを表示するViewControllerUIViewControllerは、以下のクラッシュで言及されています。

*** -[ClientDetailsViewController respondsToSelector:]: message sent to deallocated instance 0x8c17650

これを追跡して、クラッシュの原因を確認するにはどうすればよいですか?

4

1 に答える 1

3

これを追跡して、クラッシュの原因を確認するにはどうすればよいですか?

ゾンビをアクティブにするだけです。

  • Xcode4では、altキーを押しながらメニューから[製品]> [実行]を選択して[スキーム]ダイアログを表示します(または[スキームの編集]を選択して表示します)。
  • 次に、 [診断]タブで、[ゾンビオブジェクトを有効にする]チェックボックスをオンにします

診断ダイアログ これで、オブジェクトの割り当てが解除された後にオブジェクトが使用されると、どのオブジェクトが関係していて、いつオーバーリリースされたかを確認できます。


さらに、[製品]-> [分析]メニューから静的アナライザーを使用することを躊躇しないでください。Xcodeは、コードで検出できるすべてのメモリ管理エラー(およびその他)を通知します。

静的アナライザーの例

この「分析」ツールは常に時々実行し、表示されるすべての警告を修正する必要があります。これは、コードのどこが間違っているかを知るための非常に優れたツールであり、非常に良いアドバイスです。

このツールの実行時に警告が表示されないことは、コードがクラッシュしないことを保証するものではありませんが、このツールの実行時に警告が表示されることで、コードで修正が必要なことが保証されます。

于 2012-09-17T17:55:37.533 に答える