Cocoaには、PHPのprint_rやpythonのreprのような「ダンプ」はありません。これらの言語のように、オブジェクトを「表す」テキスト形式がないためです。使用する場合
NSLog(@"%@", myObj);
また
NSString *stringRep = [NSString stringWithFormat:@"%@",myObj];
また
NSString *stringRep = [myObj description];
オブジェクトの説明(ダンプではなく)を出力する目的でで[myObj description]
定義されたメソッドの結果(最初のケースではコンソールにログに記録されます)を取得します。NSObject
po myObj
gdbで呼び出すと、次のようになります[myObj debugDescription]
(多くの場合、と同じですdescription
が、常にではありません)。
NSArray
andNSDictionary
とNSData
overrideのようなクラスdescription
は、その内容の非常に便利な再帰的説明を出力しますが、デフォルトで[NSObject description]
は、インスタンスに対応するポインター値のみが出力されます。
問題の型のコードを制御する場合は、それらのメソッドdescription
またはdebugDescription
メソッドをオーバーライドして、必要なものを返すことができます。そうでない場合は、カテゴリを使用してdescription
orメソッドをオーバーライドするか、カテゴリを使用して、を使用してgdbから呼び出すことができるようなaまたはsomeを定義できます。debugDescription
myDebugDescription
po [myObj myDebugDescription]