0

アプリを終了すると (ホーム ボタンを押してバックグラウンドに移動しないと) クラッシュします。問題は、viewDidUnload で解放された一部のオブジェクトが、dealloc で再び解放されることだと思いますが、よくわかりません。私のコードは 10000 行以上ありますが、バグをすばやく特定できるツールや方法はありますか? それとも、1 つのオブジェクトが 2 回解放されたのではなく、別の何かが原因ですか?

ありがとう!

左ペインのスクリーンショットを次に示します。

クラッシュしたとき

また、viewDidUnload と dealloc にメッセージを記録しようとしましたが、エラー メッセージは表示されませんでした。

- (void)viewDidUnload {
    print "viewDidUnload 1";
    // actual method body
    print "viewDidUnload 2";
}

解放についても同じです。

編集 2: 私のアプリは Core Data を使用しているため、Core Data の終了時に手動でファイナライズする必要があるものはありますか (そうしないとクラッシュします)。

4

3 に答える 3

3

実際のデバイスでテストします。アプリがクラッシュすると、クラッシュ ログが生成されます。これは、デバイスに対応するデバイス ログセクションの XCode のオーガナイザー ウィンドウで利用できます。

そのログはクラッシュのコール スタックを提供し、おそらく検索する必要がある場所を絞り込みます。

于 2011-07-29T01:55:12.610 に答える
0

同じ問題があり、実際のデバイスで実行すると、FlurryAnalyticsでクラッシュすることがわかりました。あなたはそれを使いますか?このクラッシュを修正するには、プロジェクトから完全に削除する必要がありました(セッションを開始するだけではありません!)。

于 2012-10-02T02:11:05.833 に答える
0

コードを投稿していないかどうかはわかりません。

クラッシュログはありますか?

でどのようにリリースしていviewDidUnloadますか?

[_mayVar release];               // 1. on its own this will most likely cause a crash

[_mayVar release]; _myVar = nil; // 2. This is better as sets the pointer to nil

self.myVar = nil;                // 3. If you use properties this is easier than line 2
于 2011-07-28T23:50:28.447 に答える