¿Conectando UIButton al cierre? (Rápido, acción objetivo)

Quiero conectar un UIButton a un fragmento de código; por lo que he encontrado, el método preferido para hacer esto en Swift es utilizar eladdTarget(target: AnyObject?, action: Selector, forControlEvents: UIControlEvents) función. Esto usa elSelector construir presumiblemente para compatibilidad con versiones anteriores de las bibliotecas Obj-C. Creo que entiendo la razón de@selector en Obj-C: poder hacer referencia a un método ya que en Obj-C los métodos no son valores de primera clase.

Sin embargo, en Swift, las funciones son valores de primera clase. ¿Hay alguna manera de conectar un UIButton a un cierre, algo similar a esto:

// -- Some code here that sets up an object X

let buttonForObjectX = UIButton() 

// -- configure properties here of the button in regards to object
// -- for example title

buttonForObjectX.addAction(action: {() in 

  // this button is bound to object X, so do stuff relevant to X

}, forControlEvents: UIControlEvents.TouchUpOutside)

Que yo sepa, lo anterior no es posible actualmente. Teniendo en cuenta que Swift parece que pretende ser bastante funcional, ¿por qué es esto? Las dos opciones podrían coexistir claramente para la compatibilidad con versiones anteriores. ¿Por qué esto no funciona más como onClick () en JS? Parece que elsolamente La forma de conectar un UIButton a un par de acción objetivo es usar algo que exista únicamente por razones de compatibilidad con versiones anteriores (Selector)

Mi caso de uso es crear UIButtons en un bucle para diferentes objetos, y luego conectarlos a un cierre. (Establecer una etiqueta / buscar en un diccionario / subclasificar UIButton son soluciones sucias, pero estoy interesado en cómo hacer esto funcionalmente, es decir, este enfoque de cierre)

Respuestas a la pregunta(8)

Su respuesta a la pregunta