質問

設定方法 NSZombieEnabled そして CFZombieLevel Xcode 4 の実行可能ファイルの場合は?

役に立ちましたか?

解決

Xcode 4.x では、次を押します。

R

(またはクリック Menubar > Product > Scheme > Edit Scheme)

[診断] タブを選択し、[ゾンビ オブジェクトを有効にする] をクリックします。

Click "Enable Zombie Objects"

これにより、解放されたオブジェクトが NSZombie インスタンスに変わり、再度使用されるとコンソールに警告が表示されます。これは、メモリ使用量を増加させます (実際にはオブジェクトは解放されません) が、エラー報告を改善するデバッグ支援です。

典型的なケースは、オブジェクトを過剰に解放し、どれがオブジェクトであるかわからない場合です。

  • ゾンビの場合: -[UITableView release]: message sent to deallocated instance
  • ゾンビがいない場合: EXC_BAD_ACCESS

App Store に提出するためにアプリケーションをアーカイブする場合、この Xcode 設定は無視されます。アプリケーションをリリースする前に何もする必要はありません。

プレス中 R [製品] > [実行] を選択するのと同じです。 オルタナティブ キーが押されました。
「ゾンビオブジェクトを有効にする」チェックボックスをクリックすることは、「引数」タブの「環境変数」セクションに「NSZombieEnabled = YES」を手動で追加するのと同じです。

他のヒント

値列にYES>引数]タブと[追加NSZombieEnabledを環境変数の列にと - >編集スキーム - あなたはスキームドロップダウンバーをクリックすると、 Janoの答えは、それを見つけるための最も簡単な方法..です別の方法は次のようになります...

私はこの代替案の方が便利だと思います。

  1. 「実行ボタンドロップダウン」をクリックします。
  2. リストから選択します Profile
  3. 「楽器」プログラムが開き、選択することもできます Zombies
  4. これで、アプリを操作してエラーを引き起こしてみることができます
  5. エラーが発生するとすぐに、オブジェクトがいつ解放され、したがって割り当てが解除されたのかに関するヒントが得られるはずです。

Zombies

ゾンビが検出されるとすぐに、問題のオブジェクトがいつ割り当てられ、どこに保持または解放されたかを示すきちんとした「ゾンビ スタック」が表示されます。

Event Type    RefCt     Responsible Caller
Malloc            1     -[MyViewController loadData:]
Retain            2     -[MyDataManager initWithBaseURL:]
Release           1     -[MyDataManager initWithBaseURL:]
Release           0     -[MyViewController loadData:]
Zombie           -1     -[MyService prepareURLReuqest]

Xcode スキームの診断タブを使用する場合と比較した利点:

  1. 診断タブのオプションのチェックを外すのを忘れた場合、オブジェクトはメモリから解放されません。

  2. 破損したオブジェクトがどのメソッドで割り当て、解放、または保持されたかを示す、より詳細なスタックが表示されます。

Xcode 4.2の場合

  • プロジェクト名/スキームの編集/診断/
  • 「ゾンビオブジェクトを有効にする」チェックボックス
  • もう終わりです

Xcode 7 でオン

<

または選択します Edit Scheme から Product > Scheme メニュー

選択する Enable Zombie Objects を形成します Diagnostics タブ

xcode 7 zombie flag

代わりに、必要に応じて、 .xcconfig この記事を読むことができるファイル https://therealbnut.wordpress.com/2012/01/01/setting-xcode-4-0-environment-variables-from-a-script/

Cocoaは大幅にこのような状況をデバッグするためにあなたの能力を強化するクールな機能を提供しています。それはNSZombieEnabledと呼ばれる環境変数です、NSZombieEnabledでの設定について説明し、このビデオを見ますObjective-Cの

はXcodeの> 4.3:

あなたはスキームドロップダウンバーをクリック - > [編集スキーム - 。値の欄に>引数]タブと[環境変数]列にNSZombieEnabledを追加し、YES

幸運!!!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top