Cómo importar código Swift en Objective-C: guía paso a paso con ejemplos reales
¿Alguna vez te has encontrado en una situación en la que necesitas agregar un módulo Swift nuevo a un viejo proyecto Objective-C? ¿O tal vez tu equipo está migrando gradualmente de Objective-C a Swift, pero por ahora tienes que trabajar en modo híbrido? Si es así, has llegado al lugar indicado. La pregunta «How can I import Swift code to Objective-C?» es una de las más populares en Stack Overflow (decenas de miles de visitas), y no es de extrañar: incluso los desarrolladores experimentados a veces se confunden al configurar el puente entre los dos lenguajes.
En este artículo, analizaremos cómo importar correctamente código Swift en Objective-C, qué obstáculos te esperan y cómo no convertir tu proyecto en un rompecabezas. ¡Vamos allá!
¿Por qué Swift y Objective-C todavía coexisten?
Muchos piensan que con la llegada de Swift, todos abandonaron Objective-C y se pasaron al nuevo lenguaje. La realidad es más compleja. Miles de proyectos grandes (incluyendo aplicaciones de bancos, redes sociales y sistemas corporativos) están escritos en Objective-C, y reescribirlos por completo es una tarea que lleva años. Por eso, Apple previó un mecanismo de interacción: puedes escribir nuevas funciones en Swift y dejar el código antiguo en Objective-C.
El problema clave: Swift y Objective-C son mundos diferentes. Swift se compila en su propio formato binario, Objective-C en el suyo. Para que puedan «verse» entre sí, se necesita un puente especial: un bridging header para importar Objective-C a Swift, y un archivo de encabezado generado automáticamente para importar Swift a Objective-C.
Esquema de funcionamiento: cómo Swift ve a Objective-C y viceversa
Aclaremos de inmediato la dirección:
- Objective-C → Swift: usamos el archivo generado
ProductModuleName-Swift.h(donde ProductModuleName es el nombre de tu módulo). - Swift → Objective-C: usamos el bridging header (
ProjectName-Bridging-Header.h).
Hoy nos interesa la primera opción. Pero para entender el panorama completo, es útil conocer ambas.
Paso 1: Configuración del proyecto para trabajo conjunto
Antes de importar código Swift en Objective-C, asegúrate de que tu proyecto esté correctamente configurado. Si estás creando un proyecto desde cero y planeas una arquitectura híbrida de inmediato, es sencillo. Si el proyecto ya existía en Objective-C, necesitas agregar soporte para Swift.
Verifica la configuración de Build Settings
Abre la configuración de tu target en Xcode y busca el parámetro «Defines Module». Debe estar configurado en Yes. Si no aparece, agrégalo manualmente:
// Build Settings → Packaging → Defines Module = YESLuego busca «Product Module Name» — este es el nombre que se usará en el archivo de encabezado generado. Por defecto, coincide con el nombre del proyecto, pero puedes cambiarlo (por ejemplo, MyApp).
Crea el bridging header (si no existe)
Cuando agregas un archivo Swift por primera vez a un proyecto Objective-C, Xcode te ofrecerá crear un bridging header. Acepta. Si te perdiste ese momento, crea el archivo manualmente: New File → Header File y nómbralo YourProjectName-Bridging-Header.h. Luego, indica la ruta en la configuración:
// Build Settings → Swift Compiler - General → Objective-C Bridging Header// Ejemplo: $(SRCROOT)/$(PROJECT_NAME)/YourProjectName-Bridging-Header.hPaso 2: Escribir una clase Swift que sea accesible desde Objective-C
No todas las clases Swift son automáticamente «visibles» para Objective-C. Hay varios requisitos obligatorios:
- La clase debe heredar de
NSObject(u otra clase de Objective-C). - Todas las propiedades y métodos que quieras llamar desde Objective-C deben estar marcados con
@objcBlogs
Book Recommendations
Leer también