title: Why does NSError need double indirection? (pointer to a pointer)
body: <p>This concept seems to trouble me. Why does an NSError object need its pointer passed to a method that is modifying the object? For instance, wouldn't just passing a reference to the error do the same thing?</p>
  
  <pre><code>NSError *anError;
  [myObjc doStuff:withAnotherObj error:error];
  </code></pre>
  
  <p>and then in doStuff:</p>
  
  <pre><code> - (void)doStuff:(id)withAnotherObjc error:(NSError *)error 
   {
      // something went bad!
      [error doSomethingToTheObject];
   }
  </code></pre>
  
  <p>Why doesn't the above work like most other object messaging patterns work? Why must instead we use error:(NSError **)error?</p>