title: How to delay the execution of a block that was queued by dispatch_after?
body: <p>Let's say I want to execute a block of code later in time, so I call <code>dispatch_after</code> like so:</p>
  
  <pre><code>double delayInSeconds = 2.0;
  dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
  dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
      /* code */
  });
  </code></pre>
  
  <p>But what if I want to "pause" my program before the execution even began? Let's say I want to pause the program 1 second after this call for unknown time. Then after the pause, I would like to resume the 2 second waiting on the queue. So it would look something like this:</p>
  
  <ul>
  <li>call dispatch_after with a 2 second delay</li>
  <li>after 1 second, pause the program for unknown time</li>
  <li>after resuming, wait 1 second and execute the block (so the total delay is 2 secs)</li>
  </ul>
  
  <p>Is there a way of doing that? Or should I use another approach?</p>
  
  <p>I know that <code>dispatch_suspend</code> and <code>dispatch_resume</code> exist, but they don't really work for me (or I just don't know how to use them properly).</p>
  
  <p><strong>The solution doesn't necessarily have to involve a block, it could also be a delayed callback to a specified function. The point is that I want to be able to pause the waiting time until execution.</strong></p>