ios – Problemas de análisis en NSObjCRuntime, NSZone y NSObject

Estoy usando AddThis para agregar opciones de uso compartido en mi aplicación iOS.

He importado las clases y he agregado el distintivo -fno-objc-arc a todas las clases importadas ya que no usan ARC.

Sin embargo, cuando bash ejecutar la aplicación recibo una gran cantidad de problemas de Parse, como:

Expected identifier or '(' Unknown type name 'NSString' Unknown type name 'Protocol' ... 

Estos errores ocurren en NSObjCRuntime, NSZone y NSObject. También tengo los marcos necesarios incluidos. ¿Algunas ideas?

Incluyendo esta imagen si ayuda: imagen

Tuve el mismo problema en mi proyecto cuando intentaba mezclar el código C (.h y .c) con el código Objective-C. Encontrado el motivo del problema:

Verifique su archivo .pch para asegurarse de que cada uno de los marcos de Objective-C #import (como #import ) se #import en:

 #ifdef __OBJC__ #endif 

Si están fuera de este scope condicional, el comstackdor intentará importar marcos Objective-C en el código fuente C.

Espero que ayude.

Acabo de cambiar el nombre de archivo de Base64Transcoder.c a Base64Transcoder.m, y ahora el proyecto se comstack. No tengo idea de por qué esto soluciona el problema, pero funciona.

He tenido el mismo problema cuando mi proyecto contenía archivos .cpp.

Si el archivo .cpp no ​​contiene marcos ObjectiveC (por ej.) Tiene el tipo ‘Fuente predeterminada C ++’

enter image description here ,

pero si el archivo .cpp tiene marcos ObjectiveC, debe ser como ‘Objective-C ++ Source’

enter image description here

Tuve el mismo problema, usando códigos C y C ++ con el objective C, y no tengo un .pch La solución más fácil fue entrar en la configuración de comstackción -> Banderas del comstackdor personalizadas y establecer los “Otros indicadores C” en el objective “-x -c “y establecer las” otras banderas de C ++ “en” -x objective-c ++ ”

esto hará el truco con xCode 7.2

TLDR: si su archivo PCH es correcto, revise los encabezados de los archivos CPP para ver si ha incluido accidentalmente algún encabezado para los objetos del Objetivo C.

Los detalles: Obtuve esto porque accidentalmente había incluido un encabezado de clase Objective-C en un encabezado de clase C ++, indirectamente. La estructura era esta:

Compass.h definió una clase pura de Objective C.

ActionTracker.h definió una clase de C ++ que entendía las construcciones del Objetivo C (a través de ActionTracker.mm).

HelloWorld.h definió una clase puramente C ++.

En mi configuración original, HelloWorld.h incluía ActionTracker.h, pero esto estaba bien ya que ActionTracker.h todavía no contenía Compass.h. Más tarde, cambié mi código e incluí Compass.h en ActionTracker.h, que luego lo inserté en HelloWorld.h y obtuve estos errores.

Tuve el mismo problema cuando traté de mover el archivo info.plist de un directorio a otro. Esto de alguna manera activó XCode para editar las fases de comstackción para ese objective y aumentó significativamente la cantidad de “Fuentes de comstackción” y “Copiar recursos de paquete”.

Afortunadamente, mi proyecto tiene varios objectives que utilizo para probar (por ejemplo, demostración de la aplicación, desarrollador de aplicaciones, aplicación local, aplicación 1.1, aplicación 1.2, etc.)

Así que simplemente dupliqué uno de los objectives no afectados y lo renombré (también renombré el identificador del paquete y el esquema de comstackción) y esto obviamente me solucionó el problema, ya que no es todo el proyecto el que se vio afectado, sino solo ese objective específico.

Si quiere probar mi solución, intente crear un nuevo objective desde cero o duplique y cambie el nombre de cualquiera de sus objectives no afectados.