¿A dónde va el yo débil?

A menudo hago esto

let when = DispatchTime.now() + 2.0
DispatchQueue.main.asyncAfter(deadline: when) {
   beep()
}

y en una aplicación a menudo hacemos esto

tickle.fresh(){
    msg in
    paint()
}

pero si lo hacesesta

let when = DispatchTime.now() + 2.0
DispatchQueue.main.asyncAfter(deadline: when) {
   tickle.fresh(){
      msg in
      paint()
   }
}

por supuesto que tienes que haceresta

let when = DispatchTime.now() + 2.0
DispatchQueue.main.asyncAfter(deadline: when) { [weak self] _ in
   tickle.fresh(){
      msg in
      self?.paint()
   }
}

o tal vezesta

let when = DispatchTime.now() + 2.0
DispatchQueue.main.asyncAfter(deadline: when) {
   tickle.fresh(){
      [weak self] msg in
      self?.paint()
   }
}

o tal vez esto

let when = DispatchTime.now() + 2.0
DispatchQueue.main.asyncAfter(deadline: when) { [weak self] _ in
   tickle.fresh(){
      [weak self] msg in
      self?.paint()
   }
}
¿Qué deberíamos hacer?

Las tres sugerenciasparecer para trabajar perfectamente ¿Cuál es el significado completo aquí? ¿Y cuál debería hacer uno? ¿Es una referencia fuerte a una referencia débil, una referencia débil o fuerte? Ser o no ser? ¡Esa es la pregunta!

Respuestas a la pregunta(1)

Su respuesta a la pregunta