459

Xcode 4で実行可能ファイルを設定するにはどうすればよいNSZombieEnabledですか?CFZombieLevel

4

7 に答える 7

753

Xcode4.xではを押します

⌥</kbd>⌘</kbd>R

(またはMenubar> Product>>>をクリックしSchemeますEdit Scheme

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

クリック

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

典型的なケースは、オブジェクトをオーバーリリースし、どれがわからない場合です。

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

このXcode設定は、AppStore送信用にアプリケーションをアーカイブするときに無視されます。アプリケーションをリリースする前に何も触れる必要はありません。

押す⌥</kbd>⌘</kbd>R is the same as selecting Product > Run while keeping the Alt key pressed.
Clicking the "Enable Zombie Objects" checkbox is the same as manually adding "NSZombieEnabled = YES" in the section "Environment Variables" of the tab Arguments.

于 2011-02-07T01:55:47.390 に答える
70

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

于 2011-03-16T14:22:13.827 に答える
57

私はこの代替案がより便利だと思います:

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

ゾンビ

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

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. 破損したオブジェクトがどのメソッドで割り当て/解放または保持されたかを示す、より詳細なスタックを取得します。

于 2012-01-14T15:10:20.740 に答える
5

Xcode4.2では

  • プロジェクト名/編集スキーム/診断/
  • [ゾンビオブジェクトを有効にする]チェックボックス
  • 完了です
于 2012-04-11T07:18:52.527 に答える
5

Xcode7でオン

⌘</kbd><

または>メニューEdit Schemeから選択ProductScheme

タブEnable Zombie Objectsから選択Diagnostics

xcode7ゾンビフラグ

別の方法として、.xcconfigファイルが必要な場合は、この記事を読むことができますhttps://therealbnut.wordpress.com/2012/01/01/setting-xcode-4-0-environment-variables-from-a-script/

于 2015-08-20T06:50:01.957 に答える
1

Cocoaは、このような状況をデバッグする機能を大幅に強化する優れた機能を提供します。これはNSZombieEnabledと呼ばれる環境変数です 。Objective-CでのNSZombieEnabledの設定について説明しているこのビデオをご覧ください。

于 2013-10-22T04:41:08.740 に答える
-1

Xcode> 4.3の場合:

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

幸運を !!!

于 2013-07-05T06:38:08.893 に答える