title: Why is @autoreleasepool still needed with ARC?
body: <p>For the most part with ARC (Automatic Reference Counting), we don't need to think about memory management at all with Objective-C objects. It is not permitted to create <code>NSAutoreleasePool</code>s anymore, however there is a new syntax:</p>
  
  <pre><code>@autoreleasepool {
      …
  }
  </code></pre>
  
  <p>My question is, why would I ever need this when I'm not supposed to be manually releasing/autoreleasing ?</p>
  
  <hr>
  
  <p><strong>EDIT:</strong> To sum up what I got out of all the anwers and comments succinctly:</p>
  
  <p><strong>New Syntax:</strong></p>
  
  <p><code>@autoreleasepool { … }</code> is new syntax for</p>
  
  <pre><code>NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
  …
  [pool drain];
  </code></pre>
  
  <p><strong>More importantly:</strong></p>
  
  <ul>
  <li>ARC uses <code>autorelease</code> as well as <code>release</code>.</li>
  <li>It needs an auto release pool in place to do so.</li>
  <li>ARC doesn't create the auto release pool for you. <em>However:</em>
  
  <ul>
  <li>The main thread of every Cocoa app already has an autorelease pool in it.</li>
  </ul></li>
  <li>There are two occasions when you might want to make use of <code>@autoreleasepool</code>:
  
  <ol>
  <li>When you are in a secondary thread and there is no auto release pool, you must make your own to prevent leaks, such as <code>myRunLoop(…) { @autoreleasepool { … } return success; }</code>.</li>
  <li>When you wish to create a more local pool, as @mattjgalloway has shown in his answer.</li>
  </ol></li>
  </ul>