title: Using __weak to modify storage of a parameter in implementation
body: <p>Is it valid to use the <code>__weak</code> storage modifier in a method's implementation's signature? Especially if it is not part of the method's public signature? For example:</p>
  
  <pre><code>- (UIView *)tableView:(__weak UITableView *)tableView viewForHeaderInSection:(NSInteger)sectionIndex
  {
      UIView *view = [ABHeaderView view];
      view.actionBlock = ^{
          [tableView doSomething];
      }
      // ...
      return view;
  }
  </code></pre>
  
  <p>Does this correctly use <code>tableView</code> as a weak pointer? Or should I really do something like <code>__weak *weakTableView = tableView;</code> and use <code>weakTableView</code> within the block?</p>
  
  <p>I do not get any warnings or errors and the clang Static Analyzer does not throw any warnings.</p>