問題タブ [nszombie]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
606 参照

iphone - NSZombieEnabled の使用に関するヘルプ

いくつかのコードをデバッグしようとしています。静的アナライザーを実行し、メモリ リークを修正したと思っていましたが、2 つのタブを切り替えるとエラーが発生します。2番目のタブと最初のタブを切り替えるときのコードは次のとおりです。

self.MainToolbar setItems 行で EXC_BAD_ACCESS を取得し続けます。NSZombieEnabled を環境変数として追加し、その悪いアクセス行にブレーク ポイントを設定しましたが、ブレークポイントの後にステップを実行したり、ブレークポイントの後に続行を押したりしても、コンソールに何も出力されません。これを正しく使用していますか? ありがとう。

0 投票する
6 に答える
1864 参照

iphone - popToRootViewControllerAnimated は「EXC_BAD_ACCESS」を返します (ただし、NSZombie では取得できません)

複数のビューを持つナビゲーション ベースのアプリケーションを取得しました。最後のビューに到達すると、アプリケーションはメールを送信します (MailComposer を使用)。その後、ホーム ビューに戻りたいと思います。

すべて正常に動作しますが、次を使用してホーム vie に戻ろうとすると: [self.navigationController popToRootViewControllerAnimated:YES]; アプリケーションがクラッシュし、「EXC_BAD_ACCESS」エラーが表示されます。NSZombie を使用してこれをデバッグできることはわかっていますが、NSZombie でエラーを取得しようとすると、エラーは表示されません。

どうすればこれを修正できますか? または、すべてのビューを解放して最初のビューをリロードする方法はありますか? 私を助けるためのヒントや何でも素晴らしいでしょう。ここにいくつかのコードがあります:

0 投票する
2 に答える
267 参照

objective-c - 有効で解放されていないオブジェクトへのアクセス中に EXC_BAD_ACCESS エラーが発生しました

オブジェクトを解放しているときに発生する奇妙な問題があります。オブジェクトのdeallocメソッドで、別の (サブ) オブジェクトを解放しています。このサブオブジェクトが解放されると、EXC_BAD_ACCESS エラーが発生します。release を呼び出す直前に、サブオブジェクトが有効なポインターであると確信しています。

これが私が奇妙なことを確認した方法です-サブオブジェクトのリリースの直前に、deallocメソッド内にブレークポイントを設定し、割り当てられました! メッセージを送信でき、正しく応答します。もう 1 つの奇妙なバグは、NSZombieEnabled が YES に設定されている場合、エラーがまったく発生せず、解放されたオブジェクトにメッセージを送信したという NSZombie の通常のエラーでさえ、コードが適切に実行されることです。

これを解決する方法を知っている人はいますか?

前もって感謝します!


*編集1 *

[super dealloc] を dealloc の最後に配置するとクラッシュすることがわかりましたが、最初に配置するとクラッシュしません。以前に似たようなことがありましたが、逆に、dealloc の開始時に [super dealloc] を実行するとアプリがクラッシュし、最後にはクラッシュしませんでした。

なぜそれが違いを生むのか、いつ何を使うべきなのか?


*編集2 *

スクラッチ編集 #1! どちらの方法でも機能しません。

0 投票する
1 に答える
393 参照

iphone - xcodeとのアクティブなセッションなしでデバイス上のゾンビをデバッグする方法は?

NSZombieEnabledを使用して、リリースされたオブジェクトの乱用をデバッグしています。macとアクティブに接続していて、xcode4から実行している場合は問題ありません。しかし、私は長い実行の後に発生する1つのバグを探しています。接続せずに、デバイスでテストしたいと思います。メッセージがゾンビに送信されたときにイベントをキャッチするためのコードを作成して、関連情報を含むNSLogを表示することは可能でしょうか。

0 投票する
2 に答える
571 参照

iphone - Xcode: NSZombie がエラーをキャッチしない

重複の可能性:
Xcode malloc エラー

次のメッセージが原因で、ゲームがクラッシュすることがありました。

アドバイスどおり、Instruments で Allocations ツールを実行してリークを見つけ、NSZombie 検出を有効にしました。実行中にゾンビをチェックしているとのことでした。

しかし、アプリがクラッシュし、何もキャッチされません。

ゾンビが捕まえない理由は?

ありがとう。

0 投票する
2 に答える
688 参照

iphone - UITableViewCell でプロパティを解放する場所/場合

編集:わかりましたので、元の問題を解決する方法を見つけましたが、これが最善の方法であるかどうかはわかりません。

私の新しい質問は、ヘッダーに次のプロパティ宣言を持つ UITableViewCell のサブクラスがあるとします。

これは IB で接続されます。これを dealloc で解放せず、まったく解放しなくても大丈夫ですか? これは、exc_bad_access エラーを発生させずに動作させることができる唯一の方法です。以前は、tableviewcell が画面から消えたときに dealloc が呼び出されましたが、それでも必要でした。どこでリリースするのですか?

元のタイトル: UITableView と exc_bad_access でメモリ リークが発生しました。私はカスタム UITableViewCells をオンラインで作成するこのチュートリアルに従っていました。私は1つを作成し、チュートリアルが教えてくれたようにすべてを行いました. 私の UITableViewCell サブクラスには 3 つの UILabels と 3 つの UIButton が含まれており、それらはすべてプロパティとして定義され、IB で接続されています。ボタンがいつ押されたかを知り、テキストを変更できるようにする必要があるため、それらをクラスで使用できるようにする必要があります。アプリを実行すると、スクロールが開始され、数秒後にクラッシュし、メインに exc_bad_access が表示されます (コンソールに出力はありません)。しかし、NSZombieEnabled を使用してインストゥルメントでアプリを実行すると、アプリはまったくクラッシュせず、問題なく実行されます。ただし、楽器は割り当てを表示するため、特にスクロールすると、割り当てが非常に速く増加することがわかります。

これが PointCoordinatesCell.h (私のカスタム セル) です。

PointCoordinatesCell.m:

RootViewController.h には、クラス宣言と標準インポート以外は何も含まれていません。変数またはメソッドが定義されていません。UITableViewController をサブクラス化します。

RootViewController.m:

0 投票する
2 に答える
8852 参照

iphone - -[CALayer release]: 割り当て解除されたインスタンスに送信されたメッセージ

ビュー コントローラの 1 つの loadView: メソッドの一部のコードに問題があります。基本的に、(iPad の) 大きなビューの中央に配置されたビューがあり、プログラムで読み込まれるラベル、ボタン、アイコンがいくつかあります。

この問題は、View Controller が dealloc メソッドを呼び出して解放しようとしたときに発生します。-[CALayer release]: メッセージが割り当て解除されたインスタンスに送信され、アプリケーションがクラッシュします。

このエラーについて調べてみると、何かを過剰にリリースしているように見えますが、そうではないと思います: 以下のコードはトラブルメーカーであり、すべてに対して自動リリースと手動リリースの両方の呼び出しを試みました。単純にそれらをリリースしない (わかっている、わかっている、それは悪いことだ) が、引き続き大混乱を引き起こしている。

コンテナー プロパティは、次のように dealloc メソッドで解放されます。

人々が提供できる回答や提案は大歓迎です! 私は本当に困惑しています。

0 投票する
0 に答える
358 参照

objective-c - NSAutoreleasePool ドレイン リリース +1 送信された autorelease メッセージの数よりも多い

再現可能な方法でクラッシュする iPhone アプリをデバッグする際に問題が発生しました。

短編小説: カスタムUIViewControllerが割り当てられ、UINavigationControllerのスタックにプッシュされます。しばらくUIViewControllerして、 がスタックからポップされます。をスタックにプッシュするとUIViewController、アプリがクラッシュします。

クラッシュの標準的な手順は、Instruments をNSZombie有効にして使用することです。オブジェクトの履歴を調べると、私が理解できないことが明らかになりました:

  • オブジェクトは 2 つのautoreleaseメッセージを受け取り、
  • NSAutoreleasePoolドレイン メソッドは、3 つのリリース メッセージを送信します。

これまでのところ、クラッシュを防ぐ唯一の方法は、問題のオブジェクトにリリース メッセージを 1 つも送信しないことです。これにより、メモリ リークの赤いフラグが立てられます。

私が見落とした他の解決策はありますか?

更新:あなたの一人が明白に指摘したように:

コードに問題があります。自動解放プールのドレインとは関係ありません。

UIViewController最初のものがデリゲートとして渡されたことが判明したため、呼び出しがナビゲーションコントローラー自体から来UINavigationControllerたときに混乱しました。Zombie

間違った質問をする前に、次回はもっと注意する必要があります。

0 投票する
2 に答える
523 参照

ios - 割り当てが解除されている保持プロパティ

私はObjective-Cのメモリ管理にかなり慣れていないので、理解できたと思いますが、解決できない問題があります。

私はこのプロパティを持っています:

カスタムメソッドを使用してviewDidLoadで割り当てます。

私のdbDateFormatToNsDate方法は次のようになります。

したがって、自動解放されたオブジェクトを返します(NSDateが規則に従っている場合)。viewDidLoadしかし、私が読み込もうとしている別の関数から抜け出すときdateDisplayed

NSZombie例外が発生します。助けてくれてありがとう!

0 投票する
1 に答える
452 参照

cocoa-touch - 理解できないNSZombieログ

exc-bad-accessを追跡しようとしています。NSZombieを有効にしてInstrumentsを実行しましたが、アプリがクラッシュするとこのエラーログが表示されます。4回自動解放されるUIViewがありますが、自動解放されたプールが排出される前は、参照カウントが3であるため、intは-1参照カウントで終了します。

自動リリースされたメッセージを自分で送信していないので、どうすればこれを解決できますか?