title: Correct implementation of NSObject description method for nested classes containing collections
body: <p>With my own classes, I usually override -(NSString *)description method to ease debugging. 
  However when invoking description on a class that I implemented that calls recursively description method from my other classes, all formatting characters from the 'deeper' classes are escaped. That makes any pretty printing difficult to implement. 
  Here's an example to make it clearer: </p>
  
  <pre><code>@interface Foo {
      NSArray *barsArray;
  }
  @end
  @implementation Foo
  - (NSString *)description {
      return [NSString stringWithFormat: @"foo contents: %@", barsArray];
  }
  
  @interface Bar {
      NSString *s1;
      NSString *s2;
  }
  @implementation Bar
  - (NSString *)description {
      return [NSString stringWithFormat: @"s1: %@\ns2: %@", s1, s2];
  }
  </code></pre>
  
  <p>In this case, the \n newline characters from description of class B will get escaped in the output of class A description method. Any idea how to get rid or circumvent this behaviour? It's especially annoying when printing nested classes that all contain collections.  </p>