title: Zombie when calling completion block in background thread
body: <p>I pass a completion block to my method, this completion block will be called in the background when a network request is finished. Unfortunately, if the calling object is deallocated in the meantime, the app crashes:</p>
  
  <p>ViewController (which may be deallocated because it's popped from the navigation stack) code:</p>
  
  <pre><code>__unsafe_unretained ViewController *weakSelf = self;
  
  [[URLRequester instance] sendUrl:url successBlock:^(id JSON) {
      [weakSelf webserviceCallReturned:JSON];
  }];
  </code></pre>
  
  <p>URLRequester-Code (made simpler, of course):</p>
  
  <pre><code>- (void)sendUrl:(NSString *)urlAfterHost successBlock:(void (^)(id))successBlock {
      dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
          sleep(2);
          successBlock(nil);
          return;
      });
  }
  </code></pre>
  
  <p>If, in this 2 seconds, the ViewController gets popped from the navigation stack, the app crashes. What am I missing?</p>