2

Xcode デバッガー (lldb または gdb) をどのように使用して、NSArray に格納されているオブジェクトのタイプを判別しますか?

4

3 に答える 3

1

lldb でこれを行う別の方法は、lldb のデータ フォーマッタ (NSArray オブジェクトを「実際の」配列として表示するものを含む) と、「動的型」機能を組み合わせて使用​​することですexpr。オブジェクトの種類。たとえば、次のようになります。

(lldb) expr -T -d run-target -- *array1
(NSArray) $2 = {
      (__NSCFConstantString *) [0] = 0x0000000100002590 @"array1 object1"
      (__NSCFConstantString *) [1] = 0x00000001000025b0 @"array1 object2"
      (__NSCFConstantString *) [2] = 0x00000001000025d0 @"array1 object3"
}

オプションは-T活字印刷を有効にしました。NSArray の「合成子プロバイダー」は、配列をオブジェクトのインデックス付き配列として提示しています。これはデフォルトで機能します。オンにするために何もする必要はありませんでした。また、動的型オプション-dは、各オブジェクトの実際の型をデコードしています。次のようにして、動的タイプの検索を lldb のデフォルトにすることができることに注意してください。

(lldb) set set target.prefer-dynamic-value run-target

この配列は __NSCFConstantStrings でいっぱいのようです。これは明らかに定数 NSStrings のバッキング タイプです。

于 2013-06-07T22:33:47.770 に答える