title: Why are __block variables not retained (In non-ARC environments)?
body: <p>I was reading through the documentation on <a href="https://developer.apple.com/library/prerelease/ios/documentation/Cocoa/Conceptual/Blocks/Articles/bxVariables.html#//apple_ref/doc/uid/TP40007502-CH6-SW6" rel="nofollow" title="__block variables">__block variables</a>, and thinking about the cases where I use __block.  To me, it seems like I need it in two cases:</p>
  
  <ul>
  <li>To mark a variable as read-write when used within a block</li>
  <li>To avoid retain cycles when referencing self within a block</li>
  </ul>
  
  <p>On the surface it doesn't seem like these two things are related.  I consider the fact that __block variables not being retained as more of a trick I need to remember for the specific use case of avoiding retain cycles.</p>
  
  <p>I'm wondering, is there a more important, architectural reason why they must not be retained?  I would think some other keyword to indicate this might be more clear, as to not mix up the two features listed above.</p>
  
  <p>update - </p>
  
  <p>I should mention this is code that does not use ARC.  I now see that __block variables are in fact retained in ARC.</p>