title: Where does the weak self go?
body: <p>I often do this,</p>
  
  <pre><code>let when = DispatchTime.now() + 2.0
  DispatchQueue.main.asyncAfter(deadline: when) {
     beep()
  }
  </code></pre>
  
  <p>and in one app we often do this</p>
  
  <pre><code>tickle.fresh(){
      msg in
      paint()
  }
  </code></pre>
  
  <p>but if you do <em>this</em></p>
  
  <pre><code>let when = DispatchTime.now() + 2.0
  DispatchQueue.main.asyncAfter(deadline: when) {
     tickle.fresh(){
        msg in
        paint()
     }
  }
  </code></pre>
  
  <p>of course you have to do <em>this</em></p>
  
  <pre><code>let when = DispatchTime.now() + 2.0
  DispatchQueue.main.asyncAfter(deadline: when) { [weak self] _ in
     tickle.fresh(){
        msg in
        self?.paint()
     }
  }
  </code></pre>
  
  <p>or, maybe <em>this</em> </p>
  
  <pre><code>let when = DispatchTime.now() + 2.0
  DispatchQueue.main.asyncAfter(deadline: when) {
     tickle.fresh(){
        [weak self] msg in
        self?.paint()
     }
  }
  </code></pre>
  
  <p><em>or maybe this</em></p>
  
  <pre><code>let when = DispatchTime.now() + 2.0
  DispatchQueue.main.asyncAfter(deadline: when) { [weak self] _ in
     tickle.fresh(){
        [weak self] msg in
        self?.paint()
     }
  }
  </code></pre>
  
  <h1>W T H should we do?</h1>
  
  <p>All three suggestions <em>seem</em> to work perfectly. What's the full depth of meaning here? And which should one do? Is a strong reference to a weak reference, a weak or strong reference? To be or not to be?  That's the question!</p>