title: What is the BOOL *stop argument for enumerateObjectsUsingBlock: used for?
body: <p>I've been using <code>enumerateObjectsUsingBlock:</code> a lot lately for my fast-enumeration needs, and I'm having a hard time understanding the usage of <code>BOOL *stop</code> in the enumeration block.</p>
  
  <p>The <code>NSArray</code> class reference states</p>
  
  <blockquote>
    <p><code>stop</code>: A reference to a Boolean value. The block can set the value to <code>YES</code> to
    stop further processing of the array. The <code>stop</code> argument is an out-only
    argument. You should only ever set this Boolean to <code>YES</code> within the
    Block.</p>
  </blockquote>
  
  <p>So then of course I can add the following in my block to stop the enumeration:</p>
  
  <pre><code>if (idx == [myArray indexOfObject:[myArray lastObject]]) {
      *stop = YES;
  }
  </code></pre>
  
  <p>From what I've been able to tell, not explicitly setting <code>*stop</code> to <code>YES</code> doesn't have any negative side effects. The enumeration seems to automatically stop itself at the end of the array. So is using <code>*stop</code> really necessary in a block?</p>