title: Block pointer variable 'block' is uninitialized when captured by block
body: <p>I'm using the code seen <a href="https://stackoverflow.com/a/8552184/1971013">here</a> to execute code periodically:</p>
  
  <pre><code>#define DELAY_IN_MS 1000
  __block dispatch_time_t next = dispatch_time(DISPATCH_TIME_NOW, 0);
  void (^block)(void) = ^  // Get warning here!
  {
      next = dispatch_time(next, DELAY_IN_MS * 1000000L);
  
      // Do my periodic thing ...
  
      dispatch_after(next, dispatch_get_main_queue(), block);
  }
  </code></pre>
  
  <p>This results in a warning (see title).  I have two questions about this warning:</p>
  
  <ul>
  <li>What does it mean?</li>
  <li>Why does the warning go away when I write: <code>void (^block)(void); block = ^</code>?</li>
  </ul>