Junior — Middle
¿Al pasar o crear un cierre, se copia o se pasa por referencia?
sobes.tech AI
Respuesta de la IA
En iOS (Swift/Objective-C), los cierres (closures) se pasan por referencia, no se copian al pasarlos o crearlos. Además, el objeto del cierre en sí es un tipo de referencia.
Sin embargo, al capturar variables del contexto externo, el cierre puede crear copias de estos valores (por ejemplo, si son valores de tipo struct), o capturarlos por referencia (si son clases).
Ejemplo en Swift:
var x = 10
let closure = { print(x) } // el cierre captura x por valor (copia)
x = 20
closure() // mostrará 10, ya que x fue capturado por copia
Al pasar un cierre a una función o guardarlo en una variable, se pasa una referencia al cierre, no una copia de todo su cuerpo.
Por lo tanto, los cierres se pasan por referencia, pero las variables capturadas pueden ser copiadas o capturadas por referencia dependiendo de su tipo y contexto.