title: Objective-C: blocks in ARC
body: <p>I'm transitioning to ARC (Automatic Reference Counting) and this document was very helpful: <a href="http://developer.apple.com/library/mac/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html" rel="noreferrer">Transitioning to ARC Release Notes</a>. It says:</p>
  
  <blockquote>
    <p>How do blocks work in ARC?</p>
    
    <p>Blocks “just work” when you pass blocks up the stack in ARC mode, such as in a return. You don’t have to call Block Copy any more. You still need to use [^{} copy] when passing “down” the stack into arrayWithObjects: and other methods that do a retain.</p>
  </blockquote>
  
  <p>Can somebody elaborate on this a little bit or give some example? I understood that to mean usually I don't need to do [block copy] anymore even if the block is used outside the declared scope as ARC now will take care of it more smartly, but I still need to copy it when I want to pass the block to functions that would retain it. Is this correct?</p>
  
  <p>Actually I've experimented with it a little bit and so far it seems okay even if I pass blocks to arrays without copying, so the question. Thanks!</p>