title: NSError and __autoreleasing
body: <p>Can someone please explain to me the purpose of having <code>__autoreleasing</code> in the following sample code block?</p>
  
  <pre><code>- (void)execute:(NSError * __autoreleasing *)error {
      // do stuff, possibly assigning error if something went wrong
  }
  </code></pre>
  
  <p>I removed the <code>__autoreleasing</code> and everything still seems to compile/run fine.  I started using obj-c post ARC so I never really learned/understood all those double underscore thingamajigs.  I've read the <a href="http://developer.apple.com/library/mac/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html" rel="noreferrer">ARC transition guide</a>, but I don't fully understand their NSError example.</p>