Xcode 4 で NSZombieEnabled を設定するにはどうすればよいですか?
-
25-09-2019 - |
質問
設定方法 NSZombieEnabled
そして CFZombieLevel
Xcode 4 の実行可能ファイルの場合は?
解決
Xcode 4.x では、次を押します。
⌥⌘R
(またはクリック Menubar
> Product
> Scheme
> Edit Scheme
)
[診断] タブを選択し、[ゾンビ オブジェクトを有効にする] をクリックします。
これにより、解放されたオブジェクトが NSZombie インスタンスに変わり、再度使用されるとコンソールに警告が表示されます。これは、メモリ使用量を増加させます (実際にはオブジェクトは解放されません) が、エラー報告を改善するデバッグ支援です。
典型的なケースは、オブジェクトを過剰に解放し、どれがオブジェクトであるかわからない場合です。
- ゾンビの場合:
-[UITableView release]: message sent to deallocated instance
- ゾンビがいない場合:
App Store に提出するためにアプリケーションをアーカイブする場合、この Xcode 設定は無視されます。アプリケーションをリリースする前に何もする必要はありません。
プレス中 ⌥⌘R [製品] > [実行] を選択するのと同じです。 オルタナティブ キーが押されました。
「ゾンビオブジェクトを有効にする」チェックボックスをクリックすることは、「引数」タブの「環境変数」セクションに「NSZombieEnabled = YES」を手動で追加するのと同じです。
他のヒント
Janoの答えは、それを見つけるための最も簡単な方法..です別の方法は次のようになります...
私はこの代替案の方が便利だと思います。
- 「実行ボタンドロップダウン」をクリックします。
- リストから選択します
Profile
- 「楽器」プログラムが開き、選択することもできます
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 スキームの診断タブを使用する場合と比較した利点:
診断タブのオプションのチェックを外すのを忘れた場合、オブジェクトはメモリから解放されません。
破損したオブジェクトがどのメソッドで割り当て、解放、または保持されたかを示す、より詳細なスタックが表示されます。
Xcode 4.2の場合
- プロジェクト名/スキームの編集/診断/
- 「ゾンビオブジェクトを有効にする」チェックボックス
- もう終わりです
Xcode 7 でオン
⌘<
または選択します Edit Scheme
から Product
> Scheme
メニュー
選択する Enable Zombie Objects
を形成します Diagnostics
タブ
代わりに、必要に応じて、 .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
幸運!!!