2009-07-08 29 views
3

XCodeデバッガで自分のプログラムをデバッグするときに、マウスを配列変数に置くと、XCodeデバッガが配列内のオブジェクトの数を表示し、自分自身。XCodeデバッガでの配列に関する不思議な説明

この機能は壊れていて、今ではすべての配列に「-1812597152オブジェクト」があり、個々のオブジェクトにアクセスすることはできないと言われています。

何が間違っているのか分かりませんか?それともこれを修正するか?


編集:

これは、すべてのアレイのために起こるので、私はそのに保持問題はないと思います。

私は運がないカスタムデータビューをチェックアウトしました。残念ながら

〜/ライブラリ/ Application Support /アップル/開発ツール/ CustomDataViews/

は効果がなかったし、何のファイルが

〜/ライブラリ/ Application Support /開発/共有にありませんでした

でplistの移動/ Xcodeの/ CustomDataViews/

そして、ここでは /Developer/Library/Xcode/CustomDataViews/Foundation.plist

<key>NSArray *</key> 
<dict> 
    <key>SummaryString</key> 
    <string>{(int)[$VAR count]} objects</string> 
</dict> 
における配列のためのエントリです

これは私にはかなりよく見えます。

+0

どのコンパイラを使用していますか? – kubi

答えて

1

編集: @Benは、配列変数が有効範​​囲外であるかどうかを確認します。また、オブジェクトが(-deallocまたはGCのいずれかによって)再利用されていることを追加しますので、必要に応じて保持されることを確認してください。

すべてのアレイでこの問題が常に発生する場合は、意図せずXcodeデバッガのdata formatterサマリー文字列を変更した可能性があります。データフォーマッタを変更すると、デフォルト値が上書きされます。たとえば、NSArrayのフォーマッタは、このファイルにある:

/Developer/Library/Xcode/CustomDataViews/Foundation.plist

できるのは、このディレクトリ内のplistファイルまたはバンドルに保存することができますcreate your own data formatters

~/Library/Application Support/Developer/Shared/Xcode/CustomDataViews/

動的に指定されたカスタムデータフォーマッタ(Xcodeデバッガの要約フィールドに直接入力されるもの)は、次のディレクトリに格納されます。

~/Library/Application Support/Apple/Developer Tools/CustomDataViews/

CustomDataViews.plistファイルがそのディレクトリに存在する場合は、問題がなくなるかどうかを確認することをお勧めします。それが定義されているカスタムフォーマッタが必要ない場合(プロパティリストエディタやテキストエディタで調べることができます)、恐らくそれをゴミ箱に入れても安全です。

+0

これはすべての配列で発生するので、保持の問題はないと思います。 私は運がないカスタムデータビューをチェックアウトしました。残念ながら、〜/ライブラリ/ Application Support/Apple/Developer Tools/CustomDataViews /にあるplistを移動しても効果はありませんでした〜/ライブラリ/ Application Support/Developer/Shared/Xcode/CustomDataViews/ そして、 /Developer/Library/Xcode/CustomDataViews/Foundation.plist \t {(INT)の$ VAR数は]}オブジェクト \tをSummaryString \t にNSArray * \t \t \t におけるアレイのために\t これは私にはかなりよく見えます。 –

+0

Dangit。奇妙な書式設定。 –

2

表示しようとしているアレイの範囲外です。これは、コンパイラがその行を最適化してローカルオブジェクトをクリーンアップしている可能性があるため、関数の最後の行にブレークポイントを設定すると発生することがあります。この場合、NSStringのような他のオブジェクトも利用できなくなります。

カスタムデータフォーマッタを定義している可能性はありますが、範囲の問題の可能性が高いと言えます。コード内のブレークポイントを早めに設定して、何らかの点で配列の記述が文字化けするかどうかを確認してください。

希望に役立ちます!

+0

良い提案 - 彼はデバッグ中のすべての点で、または1つだけのためにすべての配列に起こるかどうかは言及していませんでした。これを明確にするために私の答えを更新する。 :-) –

1

データフォーマットのすべてのモンキーでこの処理が完了していない場合は、Run-> Variables View-> Enable Data Formtersオプションのチェックを外してデータフォーマットを無効にしてください。

これはカスタムデータフォーマッタを完全に無効にします。したがって、ディスプレイに影響がない場合は、それ以上考慮しないでください。

(謝罪は、まだコメントを追加できません)

関連する問題