初回投稿ということで軽めの内容にします。
NSObject クラスには
+ (NSString *)description;
と
- (NSString *)desription;
の二つの descriptionメソッドが用意されています。
前者は クラスメソッド で、後者は インスタンスメソッド になります。
リファレンスにを読むと、クラスメソッドの方は "レシーバークラスの内容を表す文字列" (通常はクラス名を返すようです)、インスタンスメソッドの方は "レシーバーの内容を説明する文字列" (通常はインスタンスの値や状態を返すように実装しますよね)を返すとあります。
このようにどちらのメソッドを呼ぶかによって結果が異なりますので、どちらのメッソドを読んでいるのかを意識しながらコーディングしましょう。
ちなみに iOS5 から追加された、
- (NSString *)debugDescription
はデバッガ用のメソッドらしいのですが、まだ利用したことがありませんでした。