Xcode: el código pierde el color de sintaxis


80

Encuentro que en varias situaciones el código Objective-C en Xcode 3.1 (Leopard) puede fallar al obtener el color de sintaxis apropiado después de escribir o perder el color que tenía.

Esto no es solo un problema de "actualización" con los nuevos símbolos personalizados, sino que también afecta a los símbolos del marco de Cocoa.

A veces, CMD-a para seleccionar todo el texto en la página de códigos hará que el color (re) aparezca, a veces, hacer doble clic en una línea para seleccionarla funcionará, a veces tengo que agregar / eliminar un espacio en un símbolo para obtener ese símbolo para (re) colorear. Reconstruir o cerrar / reabrir el proyecto puede funcionar o no.

¿Es este un problema conocido con Xcode? Para algo tan molesto para mí, no encuentro las abundantes discusiones al respecto en SO y en otros lugares que esperaría.

¿Y hay algún comando para forzar el cambio de color de la sintaxis global?


También verifique mi respuesta aquí stackoverflow.com/questions/1627033/…
Gajendra K Chauhan

Respuestas:


148

1.) Vaya a Proyecto -> Configuración de compilación -> Rutas de búsqueda de encabezado

2.) Agregar "$ (SRCROOT) / **"

3.) Cerrar y recargar el proyecto

4.) Vaya a Xcode -> Ventana -> Organizador -> Proyectos -> $ YourProject -> Eliminar datos derivados

5.) Espere un momento hasta que XCode reconstruya todos los índices.


Para obtener más información, active el registro detallado:

1.) Aumente el nivel de registro de Xcode en la aplicación Terminal: los valores predeterminados escriben com.apple.dt.Xcode IDEIndexingClangInvocationLogLevel 3

2.) Abra la aplicación de consola. Buscar "xcode"

3.) Vi errores de "archivo no encontrado" para los archivos de encabezado mencionados en el archivo pch (por lo tanto, la solución anterior)


2
la segunda parte de tu respuesta fue muy útil !!
Denis Mikhaylov

2
Mi experiencia en los laboratorios de WWDC este año fue que si desea que funcione el resaltado de sintaxis, desactive la compilación previa por completo ... funcionó para mí, pero parece una solución inadecuada
Stew

Gracias, @Lars schneider. es una manera agradable.
Tirth

2
¡Muchas gracias! # 4 (eliminar datos derivados) también funcionó para mí.
Mark Mckelvie

1
Esto funcionó para mí en Xcode 8.3, mientras que otra solución que anteriormente funcionaba en 8.2 dejó de restaurar el resaltado de sintaxis. ¡Excelente respuesta atemporal!
Adrian

43

Tuve el mismo problema con un proyecto que estaba bien en Xcode 3 y para el cual el resaltado de sintaxis y la finalización del código se rompieron en Xcode 4. Me tomó la mejor mitad del día resolverlo, pero descubrí que los siguientes pasos funcionarán reproducir / solucionar el problema al 100% para mí.

Después de probar todas las soluciones mencionadas anteriormente en vano, intenté crear el proyecto desde cero y reimportar cada archivo y carpeta minuciosamente. Cada vez que importaba un par de archivos, comprobaba y el resaltado de sintaxis seguía funcionando. Incluso después de los últimos, todavía lo hizo. Luego presioné compilar que falló porque olvidé incluir un par de archivos de encabezado comunes en el archivo .pch del proyecto que estaban en el proyecto anterior. Y fue entonces cuando CodeSense volvió a romperse.

Después de una investigación más profunda, descubrimos que si importa un archivo de encabezado que a su vez importa el mismo archivo de encabezado de marco que el .pch ya lo hace, CodeSense se romperá. La misma configuración no causó ningún problema en Xcode 3.

Ejemplo:

project.pch

#import <Foundation/Foundation.h>
#import "projectConfig.h"

projectConfig.h

#import <Foundation/Foundation.h>
#import "one.h"
#import "two.h"

Entonces, al eliminar lo completamente innecesario

#import <Foundation/Foundation.h>

directiva de 'projectConfig.h' puede arreglar el resaltado y la finalización del código también volverá para usted. Si tu problema es el mismo que el mío.


sí ... solo tuve el mismo problema ... y la solución de rage lo solucionó.
código cruzado

4
¿Por qué no se vota en la estratosfera? No me molesté en limpiar todos mis problemas de encabezado y en su lugar simplemente desactivé la opción Precompile Prefix Header para mi objetivo y todo está bien. Finalmente puedo hacer que todo el equipo se actualice a 4.2 ya que ahí es donde rompimos.
Rob Booth

2
¡Funciona! Hice lo mismo que @Rob Booth, desactivé "Precompile Prefix Header" (lo configuré en NO), limpié mi proyecto y eliminé sus datos derivados. ¡Mi resaltado de sintaxis se reinició para funcionar!
hbobenicio

esto solucionó mi problema. El mío no era el archivo de la Fundación, sino una clase personalizada. Simplemente lo eliminé del archivo .pch, luego lo leí y eliminé todas las instancias en mis otros archivos de clase.
Bot

Tienes mi agradecimiento. :) Seguí tu descripción exactamente. Eliminé Foundation y UIKit de todos los archivos que importé en mi .PCH.
Timo

15

Simplemente seleccione el archivo que perdió el color de sintaxis, presione Editor> Color de sintaxis> (elija su idioma (Objective c ++ por ejemplo) en lugar de 'Predeterminado'


2
Esto me pasó a mí. No estoy seguro de por qué XCode usaría genérico en lugar del tipo de archivo correcto solo para un archivo, pero este paso lo resolvió. Primero intenté limpiar y eliminar los datos derivados, lo que supuse era el culpable.
Rudi

salud ... Apple estaba seleccionando AppleScript para mí lol gracias amigo
Bikram Thapa

7

He descubierto que la mejor manera de recuperar el color de la sintaxis es simplemente salir de Xcode y volver a iniciarlo. No podría decirte por qué, pero eso funciona siempre.


1
Para mí incluso fue suficiente con reabrir el proyecto.
jueves

¡Qué loco es eso! No solo
corrigió

4

Encuentro que lo siguiente a menudo funcionará ...

"Vuelva a seleccionar" tanto "Base SDK" - como "Arquitectura" - en "Configuración de compilación". ( 1Haga clic en el icono azul del proyecto en la parte superior izquierda, mientras está en el "modo de navegador", también conocido como , luego haga clic en la configuración del proyecto y jugar con las cosas allí.

Asegúrate de que todos estén alineados / no está de más hacer un poco de movimiento alternado allí, mientras estás allí ... ya sabes, solo mézclalo un poco. Notarás que xCode tiene un mini-trazo diminuto, cada vez que cambias entre 64 y 32 bits… Esto es generalmente cuando sé si el resaltado de código está muerto por la noche o si estoy listo para comenzar.

A menudo, tendré un proyecto que se resalta instantáneamente en el modo de 32 bits, y se queda ahí en 64… Quién sabe… Ahh, Xcode, chiflado chiflado.


1
La respuesta me ayudó mucho y funcionó ... Pero tu estilo de escritura podría mejorarse :)
ItalyPaleAle

En retrospectiva, sí, esta respuesta puede resultar incomprensible para cualquier hablante de inglés no nativo. Por desgracia, para mí ... son bolas de aire .
Alex Gray

3

Seleccione su proyecto -> pestaña Configuración de compilación -> Apple LLVM Language 5.0 -> Precompile Prefix Header to YES. NSLog no destacó. Actualmente ejecutando Xcode 5.0.1 Espero que ayude =) Gracias @rebelzach



2

Este parece ser un error similar de esta pregunta

Yo era capaz de corregir este problema estableciendo Precompile Prefix Headerque Noen la configuración de generación.


1

Recientemente tuve un problema similar, todo el color y el autocompletado dejaron de funcionar para los marcos integrados, mis propias clases todavía funcionaban. Alguien me recomendó que desactivara "Ejecutar analizador estático" en la configuración de compilación. Es extraño, pero funcionó.


1

Para mí fue que renombré mi proyecto, y Tests objetivo de seguía apuntando a la ubicación de pch anterior, pero el objetivo de mi aplicación apuntaba a la nueva.

Si el delegado de su aplicación todavía tiene sentido del código, este también podría ser su caso. Vaya al proyecto, seleccione el 'prefijo' de búsqueda de destino 'Pruebas' y configúrelo en el valor equivalente en el destino 'aplicación'.


0

Abra la configuración del proyecto ( Proyecto> Menú Editar configuración del proyecto ) y luego haga clic en el botón Reconstruir índice de detección de código en la pestaña General . Esto recreará el índice que usa Xcode para colorear la sintaxis.

Este proceso puede llevar un tiempo para proyectos más grandes, por lo que puede verificar el progreso en la ventana Actividad ( Ventana> menú Actividad ).


2
Una y otra vez, esto no soluciona el problema para mí. Debo estar haciendo algo mal, ya que XCode simplemente no se molesta en resaltar la sintaxis o mostrar la finalización automática.
Jessedc

1
Asegúrese de registrar los errores de Apple sobre este tipo de problemas: bugreport.apple.com.
Lyndsey Ferguson

0

Además, en XCode4 no hay ningún botón para reconstruir el índice de detección de código.


Leí en alguna parte que esto probablemente se deba a que XCode4 ya no necesita un índice de sentido de código. Creo que usa el nuevo análisis de sintaxis de Clang directamente en lugar de mantener un índice separado. Esta es también la razón por la que las sugerencias de código son mucho más precisas, ya que solo sugieren finalizaciones de código que tienen sentido desde el punto de vista del compilador.
markquezada

1
Resulta que hay una manera - stackoverflow.com/questions/1627033/…
Arkaaito

0

Tuve el mismo problema y lo resolví actualizando mi configuración de compilación para usar el compilador predeterminado del sistema, LLVM GCC 4.2.

Parece que hay múltiples factores.


0

También experimento este problema, y ​​he probado las soluciones "reconstruir el índice", "reiniciar XCode", "cambiar la configuración del compilador a LLVM GCC 4.2". Esos no me ayudaron.

Así que intenté agregar el siguiente código de inmediato junto con la nueva creación del archivo de encabezado.

#include "header.h"

using namespace cocos2d

Luego, el código agregado anteriormente en el archivo de encabezado se colorea y puede reconocer clases y demás.

He usado cocos2d-x, por lo que mi sintaxis se basa en c ++. Sin embargo, todavía no lo pruebo con Objective-c.


0

Para alguien todavía no sé por qué. Déjelo abierto con XCode 8.2 , debería funcionar

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.