リンクした質問の受け入れられた回答のコードを利用して、デバッグ中にいつでも呼び出すことができるように、それを便利なメソッドにラップするだけです。あなたの場所では、NSObjectを拡張するカテゴリを作成し、すべての ivar を含むNSDictionaryを返すメソッドを追加します。次に例を示します。
- (NSDictionary*) ivars
{
NSMutableDictionary* ivarsDict=[NSMutableDictionary new];
unsigned int count;
Ivar* ivars=class_copyIvarList([self class], &count);
for(int i=0; i<count; i++)
{
Ivar ivar= ivars[i];
const char* name = ivar_getName(ivar);
const char* typeEncoding = ivar_getTypeEncoding(ivar);
[ivarsDict setObject: [NSString stringWithFormat: @"%s",typeEncoding] forKey: [NSString stringWithFormat: @"%s",name]];
}
free(ivars);
return ivarsDict;
}
次に、タイプがわからないオブジェクトがNSObjectから直接的または間接的に継承されている場合、このメソッドから返された辞書を出力するだけで 済みます。
(lldb) po [someObject ivars]
クレジット: Objective-C でオブジェクトのすべてのフィールドを一覧表示するにはどうすればよいですか?
PS: objc/runtime.hをインポートする必要があります。