una sirven que programacion principales para otro librerias lenguaje las incluir hacer como cabeceras cabecera archivos archivo objective-c swift header-files target

objective c - sirven - Objetivo C al archivo de encabezado Swift con mĂșltiples objetivos



para que sirven las librerias de lenguaje c (6)

Llamo con éxito a mis clases Swift desde el objetivo C (para el destino ''MyApp'') a través de la declaración de importación:

#import "MyApp-Swift.h"

Ahora he creado un nuevo objetivo llamado "MyAppLite"

Cuando compilo el nuevo objetivo, obtengo errores porque el código requiere "MyApp-Swift.h", pero el compilador está creando "MyAppLite-Swift.h"

Entonces, necesito crear un encabezado condicional Swift / ObjC #import para el objetivo contra el que estoy compilando.

¿Cómo se puede hacer esto, o hay una mejor manera?


Bueno, la única forma en que puedo arreglarlo es ...

#ifdef IS_LITE #import "MyApp_Lite-Swift.h" #else #import "MyApp-Swift.h" #endif

Tenga en cuenta que si hay caracteres ''ilegales'' en el nombre del módulo de mi producto, deben reemplazarse con guiones bajos.

¡Espero que ayude!


La única forma de trabajar es la siguiente:

1- desde el primer objetivo (que tiene un puente de trabajo) Configuración de construcción seleccione Objetivo C Encabezado de puente
2- Copia el encabezado de puente del objetivo C
3- abre la otra configuración de compilación de destino
4- Péguelo 5- cambie el archivo de encabezado a su nuevo archivo de encabezado (es decir, objetivo Bh)

(ahora tienes esta opción para dos objetivos)


La mejor manera que he encontrado para abordar este problema es en la configuración de proyecto compartido de Xcode. Puede buscar la siguiente configuración:

Nombre de encabezado de interfaz generado por Objective-C *

Si establece ese valor en un nombre de encabezado común, como "MyProject-Swift.h", se aplicará a cada uno de sus objetivos y podrá usar de forma segura la declaración de importación en cualquiera de sus archivos Objective-C. Esto le permite continuar utilizando nombres de módulos de productos únicos para cada objetivo, si es necesario.

He probado esto en Xcode Versión 6.4 (6E35b).

* Nota: Esto aparecerá bajo la configuración del compilador Swift, que solo es visible si tiene archivos fuente Swift agregados a su proyecto. Además, si un objetivo no tiene ninguna fuente Swift asociada, las opciones del compilador Swift no estarán visibles para la configuración de compilación de ese objetivo.

¡Buena suerte!


Las respuestas anteriores tienen algunos problemas si decide cambiar el nombre de sus objetivos o proyecto, o si usa SWIFT_MODULE_NAME según lo previsto.

La solución más universal es cambiar SWIFT_OBJC_INTERFACE_HEADER_NAME ("Nombre del encabezado de la interfaz generada por Objective-C") en Proyecto, no Objetivos, Configuración de compilación, a:

  • $(PROJECT_NAME)-Swift.h : uno por proyecto;
  • $(SWIFT_MODULE_NAME)-Swift.h : uno por módulo (valor predeterminado).


Puse la instrucción #import <project> -Swift.h apropiada en un archivo de encabezado de prefijo (<project> -Prefix.pch) definido / agregado para cada compilación (objetivo / esquema).


También es posible establecer la configuración del Product Module Name del Product Module Name en Build Settings para que sea la misma en todos los módulos (lo configuré en $(PROJECT_NAME) ), de modo que el archivo <project>-Swift.h que se genera tenga el mismo nombre en todos los módulos. Esto elimina la necesidad de agregar / verificar macros de preprocesador.