name keywords description content objective-c cocoa-touch

objective c - keywords - Incluye un encabezado no modular dentro del módulo del marco



meta keywords (12)

Estoy usando Xcode 6,

1) Primero estoy creando una biblioteca dinámica (CoreLibrary). Esta biblioteca contiene el archivo RequestPoster.h.

2) Luego creo un Marco Cocoa Touch y agregué esta biblioteca dinámica (CoreLibrary).

3) Entonces este framework se agrega a mi proyecto y da error en el archivo RequestPoster.h (CoreLibrary).

Error: Incluir un encabezado no modular dentro de la clase de módulo de infraestructura:

ifaddrs.h, arpa / inet.h, sys / types.h>

Este archivo no se encuentra en el proyecto.


"Incluir un encabezado no modular dentro del módulo del marco"

Cuando obtiene este error, la solución en algunas circunstancias puede ser simplemente marcar el archivo que está tratando de importar como "público" en el inspector de archivos "Membresía objetivo". El valor predeterminado es "Proyecto", y cuando se establece de esta manera puede causar este error. Ese fue el caso cuando intenté importar los encabezados de Google Analytic en un marco, por ejemplo.


Asegúrese de que los archivos de encabezado estén disponibles públicamente como parte de los encabezados públicos del marco.

Goto Framework -> Target -> Build Phases y arrastre para mover los archivos de cabecera relevantes de Project a Public. ¡Espero que ayude!


El mismo problema hace que enloquezca. Finalmente, encuentro poner la ''importación xxx.h'' en la implementación en lugar de la interfaz, puede solucionar el problema. Y si usa Cocoapods para administrar su proyecto, puede agregar

s.user_target_xcconfig = {''CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES'' => ''SÍ''}

en su archivo ''xxx.podspec''.


En realidad, una forma más fácil de corregir esto es mover la instrucción #import a la parte superior del archivo .m (en lugar de tenerlo en su archivo de encabezado .h ). De esta forma, no se quejará de incluir un archivo de encabezado no modular. Tuve este problema en el que Allow non-module includes establecer en YES NO funcionó para mí, por lo que moviéndolo al archivo de implementación, dejó de quejarse. De hecho, esta es la forma preferida de importar e incluir archivos de encabezado.


Esto fue un problema un poco molesto para mí. Ninguna sugerencia pareció ayudar mi caso particular, ya que necesitaba incluir los encabezados "no modulares" en mi archivo de encabezado de archivo individual. El trabajo que hice fue pegar la llamada de importación en el archivo de encabezado del prefijo.


Intente ir a Configuraciones de compilación en "Destino" y establezca "Permitir inclusiones no modulares en módulos de marco" a SÍ.

La verdadera respuesta es que el propietario de la biblioteca debe cambiar la ubicación de las importaciones. Esos archivos ifaddrs.h, arpa / inet.h, sys / types.h se están importando en un archivo .h en un marco de trabajo, lo que no le gusta a Xcode. El mantenedor de la biblioteca debe moverlos a un archivo .m. Ver por ejemplo este problema en GitHub, donde AFNetworking solucionó el mismo problema: https://github.com/AFNetworking/AFNetworking/issues/2205


Pude borrar docenas de estos errores usando Git clean. Aquí está el comando: git clean -dffx && git reset --hard


Puede establecer Permitir inclusiones no modulares en los módulos del marco en Configuraciones de compilación para el objetivo afectado en SÍ. Esta es la configuración de compilación que necesita editar:

NOTA : Debe usar esta función para descubrir el error subyacente, que he encontrado que es frecuentemente causado por la duplicación de inclusiones globales con corchetes angulares en archivos con alguna relación dependiente, es decir:

#import <Foo/Bar.h> // referred to in two or more dependent files

Si establecer Permitir No Modular incluye en los Módulos de Marco en resulta en un conjunto de errores de "X es una referencia ambigua" o algo por el estilo, debe poder rastrear los duplicados ofensores y eliminarlos. Después de haber limpiado su código, establezca Permitir inclusiones no modulares en los módulos de marco de nuevo en NO .


Si necesita esto para los objetivos de CocoaPods agregue estas líneas en Podfile :

post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| target.build_settings(config.name)[''CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES''] = ''YES'' end end end


Si ve este error en un encabezado paraguas al construir un marco dinámico , asegúrese de importar su archivo como:

#import "MyFile.h"

y no como #import <MyFramework/MyFile.h> .


Tuve el mismo problema y lo resolví haciendo público el archivo de encabezado.

Si está trabajando en múltiples módulos en su proyecto. Entonces su archivo de encabezado debe ser público para ser utilizado en otras partes de los proyectos. Lo que necesita es seleccionar ese archivo de encabezado y en la vista de Utilidades del proyecto. Cambia el archivo de Proyecto / Privado a Público. Ver imagen a continuación:


Tuve el mismo problema y nada desde arriba me ayudó. Así que espero que mi respuesta sea útil para alguien. En mi caso, el problema estaba en la configuración ALWAYS_SEARCH_USER_PATHS. Cuando se configuró para NO proyecto construido y funcionó bien. Pero en la medida en que uno de los pods requirió que se estableciera en SÍ, estaba recibiendo un error

Incluye un encabezado no modular dentro del módulo del marco

Después de tomar un par de tazas de café e investigar durante todo el día, descubrí que según los problemas conocidos de las notas de la versión Beta 2 de Xcode 7.1 :

• Si obtiene un error que indica "Incluir un encabezado no modular dentro del módulo de marco" para un marco que compiló previamente, asegúrese de que la configuración de compilación "Buscar siempre en las rutas de usuario" esté establecida en "No". El valor predeterminado es "Sí" solo por razones heredadas. (22784786)

Estaba usando XCode 7.3, pero parece que este error no se ha corregido todavía.