title: dispatch_after after dealloc issue
body: <p>In MyViewController in viewDidLoad I have only one call:</p>
  
  <pre><code>- (void)viewDidLoad
  {
      [super viewDidLoad];
      // Do any additional setup after loading the view.
  
      self.isNeedToExecute = YES;
      dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(20 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                  [self doSomeSimpleThings];
              });
  }
  
  -(void)doSomeSimpleThings {
        if (!self.isNeedToExecute) {
             return;
        }
        // do some simple actions
  }
  
  - (void)dealloc {
       self.isNeedToExecute = NO;
  }
  </code></pre>
  
  <p>After that in code I pop this view controller, so without <code>dispatch_after</code> the <code>dealloc</code> would be executed for sure.</p>
  
  <p><strong>The questions:</strong></p>
  
  <p>1) will the dealloc method be called in this case (when we have <code>dispatch_after</code>, that should be executed in 20 seconds)?</p>
  
  <p>2) will this method <code>[self doSomeSimpleThings];</code> be executed after <code>dealloc</code>?</p>
  
  <p><strong>Edit:</strong></p>
  
  <p>I tried it before posting this question, and dealloc wasn't called and thought that it was strange, that's why I asked this question here.</p>