ios compiler-errors automatic-ref-counting addthis

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



compiler-errors automatic-ref-counting (6)

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

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 intento 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:


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 comprendía construcciones de Objective 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 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 <UIKit/UIKit.h> ) se #import <UIKit/UIKit.h> en:

#ifdef __OBJC__ #endif

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

Espero que ayude.


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 ++''

,

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


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 compilación para ese objetivo y aumentó significativamente la cantidad de "Fuentes de compilación" y "Copiar recursos de paquete".

Afortunadamente, mi proyecto tiene varios objetivos 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 objetivos no afectados y lo renombré (también renombré el identificador del paquete y el esquema de compilación) y esto obviamente me solucionó el problema, ya que no es todo el proyecto el que se vio afectado, sino solo ese objetivo específico.

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


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

esto hará el truco con xCode 7.2