title: Retain cycle on `self` with blocks
body: <p>I'm afraid this question is pretty basic, but I think it's relevant to a lot of Objective-C programmers who are getting into blocks.</p>
  
  <p>What I've heard is that since blocks capture local variables referenced within them as <code>const</code> copies, using <code>self</code> within a block can result in a retain cycle, should that block be copied. So, we are supposed to use <code>__block</code> to force the block to deal directly with <code>self</code> instead of having it copied.</p>
  
  <pre><code>__block typeof(self) bself = self;
  [someObject messageWithBlock:^{ [bself doSomething]; }];
  </code></pre>
  
  <p>instead of just</p>
  
  <pre><code>[someObject messageWithBlock:^{ [self doSomething]; }];
  </code></pre>
  
  <p>What I'd like to know is the following: if this is true, is there a way that I can avoid the ugliness (aside from using GC)?</p>