0

私は私の最初の本当に難しいEXC_BAD_ACCESS問題を解決しようとしています。多くのチュートリアルやブログから、ゾンビを使用してどこが間違っているのかを理解するのに役立てることができます。しかし、ゾンビが機能しているとは思わないので、コンソールから何も役に立たないことは間違いありません。

プログラムを開始すると、次のように表示されます。This GDB was configured as "x86_64-apple-darwin".Setting environment variable "NSZombieEnabled" to null value.

最終的に、使用したNSLogトレースがいくつか表示されます。

Program received signal:  “EXC_BAD_ACCESS”.

まったく助けにはならない。何か案は?ゾンビが働いていても、どこで悪いアクセスが起こったのかを教えてくれないのではないかとこっそり疑っています。ObjectiveCは私を悲しませます--ActionScriptでは3秒かかります:(


あなたはクラッシュがここにあると言います(次回質問を編集してください):

- (IBAction) toggleView{
if(switchableView.subviews.count != 0)
    [[switchableView.subviews objectAtIndex:0] removeFromSuperview];
UIViewController* newView = (viewSelector.selectedSegmentIndex == 0) ? [Login new] : [UserRegistration new];
[switchableView addSubview:newView.view];
//[newView release];
}
4

2 に答える 2

2

実際、コンソールから何か便利なものを取得しています。NSZombie が有効になっていないことを示しています - 「環境変数 "NSZombieEnabled" を null 値に設定しています。」

値は null ではなく YES である必要があります。

実行可能ファイル -> ターゲット名 -> 引数 -> 環境に設定する変数

NSZombies が有効になっていない場合でも、コール スタックから不正なアクセスがどこにあるのかを簡単に確認できます。アクションスクリプトはスクリプト言語です。

于 2010-10-31T16:51:57.493 に答える
0

過剰に解放されたオブジェクトが原因でこのエラーが発生しなければならない理由はありません。クラッシュする理由は他にもたくさんあります。

Program received signal: “EXC_BAD_ACCESS”.

OK -- では、どこでクラッシュしているのでしょうか? バックトレースとは何ですか?デバッガーにクラッシュしたはずであり、デバッガーはクラッシュに関する詳細を表示しているはずです。

バックトレースと、たまたまそのバックトレースにあるコードを投稿してください。


これはバックトレースではありませんが、より多くのコンテキストが得られます。バックトレースは、クラッシュが発生している場所を正確に示すという点で役立ちます。

ゾンビに関する限り、Run -> Run With Performance Tool -> Zombiesメニュー項目を使用して、ゾンビ検出モードでインストゥルメントを起動する方が簡単だと思います。

コメントアウトするとクラッシュがなくなるというreleaseことは、メモリ管理の問題を示しています。投稿したコードは、オーバーライドしなかったという前提で問題ないように見えますnew

「ビルドと分析」を試しましたか?

予期しないテーブルが表示されるということは、[明らかに] コードに他の問題があることを示しています。それには、メモリ管理の問題も含まれている可能性がありますか?

またremoveFromSuperview:、選択したセグメントについて後で照会されたビューが解放および割り当て解除される場合、それもクラッシュを引き起こす可能性があります。


Objective C は私を悲しませます -- これは ActionScript で 3 秒かかりました

知らないことを、知っていることとは関係のないことのように扱おうとすると、悲しくなります。言語、ツール、または新しい環境での成功は、ツールの詳細と同じくらいあなたの態度にかかっています。

一歩下がって、いくつかのチュートリアルを実行したり、アプリケーションのデバッグに関するドキュメントを読んだりすることをお勧めします。

于 2010-10-31T16:51:53.650 に答える