title: Objective-C block parameters
body: <p>Say we have this block:</p>
  
  <pre><code>int (^aBlock)(BOOL) = ^(BOOL param) { ...
  </code></pre>
  
  <p>My current understanding of this is: the first <code>int</code> is the return type, <code>(^aBlock)(BOOL)</code> gives the name of the method and the type of its parameter, and <code>= ^(BOOL param)</code> is the parameter's name inside the block ... plus the parameter's type again?</p>
  
  <p>Why is the syntax such that we have to list the parameter type twice? Could the two types ever be different?</p>