Diferencia entre bloque (Objetivo C) y cierre (Swift) en ios

En los tutoriales está escrito que funcionalmente ambos son iguales, incluso el cierre es más fácil, entonces bloquear y evitar la complejidad de la administración de bloques y memory, he pasado por muchos tutoriales, pero excepto estos, no estoy notando la diferencia entre el "cierre" de Swift y Objetivo-C "bloque".

¿Alguien puede explicar esta diferencia en profundidad? Cualquier ayuda sería apreciada.

Extracto de: Apple Inc. "Uso de Swift con Cocoa y Objective-C." IBooks:

"Los cierres Swift y los bloques Objective-C son compatibles, por lo que puedes pasar cierres Swift a los methods Objective-C que esperan bloques. Los cierres rápidos y las funciones tienen el mismo tipo, por lo que incluso puede pasar el nombre de una function Swift.

Los cierres tienen una semántica de captura similar a los bloques, pero difieren de una manera key: las variables son mutables en lugar de copydos. En otras palabras, el comportamiento de __bloque en Objective-C es el comportamiento pnetworkingeterminado para las variables en Swift ".

Leves diferencias Se mencionó uno; Las variables se capturan como variables, no como valores. Que puede ser útil o una trampa. Es importante destacar que puede definir una list de captura en un cierre Swift, por lo que si incluye propiedad propia en la list de captura, el valor de esa propiedad se captura y no se autoevalúa. Eso también simplifica la captura de variables débiles.

Para mostrar un ejemplo de código real de las diferencias:

Esto comstack:

let x : @convention(swift) (inout Int) -> () 

Esto no lo hace:

 let y : @convention(block) (inout Int) -> () 

con el error (inout Int) -> () is not representable in Objective-C