2010-01-26 6 views
78

Je trouve que dans diverses situations, le code Objective-C dans Xcode 3.1 (Leopard) peut échouer à obtenir une coloration syntaxique appropriée après avoir tapé ou perdu la coloration qu'il avait.Xcode: le code perd la coloration syntaxique

Il ne s'agit pas simplement d'un problème d'actualisation avec de nouveaux symboles personnalisés, mais il affecte également les symboles de l'infrastructure Cocoa. Parfois, CMD-a pour sélectionner tout le texte sur la page de code fera apparaître la couleur (re), parfois en double-cliquant sur une ligne pour la sélectionner, cela va fonctionner, parfois je dois ajouter/supprimer un espace dans un symbole pour obtenir ce symbole pour (re) colorer. La reconstruction ou la fermeture/réouverture du projet peut ou non fonctionner.

Est-ce un problème connu avec Xcode? Pour quelque chose de si ennuyeux pour moi, je ne trouve pas les discussions abondantes sur SO et ailleurs je m'attendrais.

Et y a-t-il une commande pour forcer la recoloration de la syntaxe globale?

+0

Vérifiez aussi ma réponse ici http://stackoverflow.com/questions/1627033/xcode-code-sense-color-completion-not-working/33142213#33142213 –

Répondre

0

Ouvrez les paramètres du projet (Projet> Modifier les paramètres du projet le menu) puis cliquez sur le Reconstruire Sense Code Index bouton dans l'onglet Général . Cela va recréer l'index utilisé par Xcode pour la coloration syntaxique.

Ce processus peut prendre un certain temps pour des projets plus importants. Vous pouvez ainsi vérifier la progression dans la fenêtre Activité (Fenêtre> Activité).

+2

temps après le temps, cela ne règle pas le problème pour moi. Je dois faire quelque chose de mal, car XCode ne prend tout simplement pas la peine de mettre en évidence la syntaxe ou d'afficher la complétion automatique. – Jessedc

+1

S'il vous plaît assurez-vous que vous connectez des bogues contre Apple à propos de ces types de problèmes: bugreport.apple.com. –

1

J'ai récemment eu un problème similaire, toutes les couleurs et la saisie semi-automatique ont cessé de fonctionner pour les frameworks intégrés, mes propres classes fonctionnaient encore. Quelqu'un m'a recommandé d'éteindre "Run Static Analyzer" dans les paramètres de construction. C'est bizarre, mais ça a marché.

0

En outre, dans XCode4 il n'y a aucun bouton pour reconstruire l'index de détection de code.

+0

J'ai lu quelque part que c'est probablement parce que XCode4 n'a plus besoin d'un index de détection de code. Je pense qu'il utilise directement la nouvelle analyse de syntaxe Clang au lieu de garder un index séparé. C'est aussi pourquoi les suggestions de code sont beaucoup plus précises puisqu'elles suggèrent seulement des complétions de code qui ont du sens du point de vue du compilateur. – markquezada

+1

Il se trouve qu'il ya un moyen - http://stackoverflow.com/questions/1627033/code-code-sense-color-completion-not-working/5958336#5958336 – Arkaaito

13

Il suffit de sélectionner le fichier qui a perdu la coloration syntaxique, éditeur de presse> Syntaxe Coloring> (choisissez votre langue (objectif C++ Ex) au lieu de « défaut »

+2

Cela m'est arrivé. Je ne sais pas pourquoi XCode utiliserait par défaut Generic au lieu du type de fichier juste pour un seul fichier, mais cette étape l'a résolu. J'ai d'abord essayé de nettoyer et de supprimer les données dérivées, ce que j'ai supposé être un coupable. – Rudi

+0

acclame ... apple sélectionnait AppleScript pour moi lol merci mate –

0

J'ai eu le même problème et résolu ce problème en mettant à jour mon paramètres de construction à utiliser le compilateur par défaut du système, LLVM GCC 4.2.

Il semble qu'il ya plusieurs facteurs.

43

J'ai eu le même problème avec un projet qui était très bien dans Xcode 3 et dont la coloration syntaxique et le code l'achèvement a cassé dans Xcode 4. Il m'a fallu la meilleure moitié de la journée pour le comprendre, mais j'ai trouvé que t Les étapes suivantes vont reproduire/réparer le problème à 100% pour moi. Après avoir essayé toutes les solutions mentionnées ci-dessus en vain, j'ai essayé de créer le projet à partir de rien et de réimporter chaque fichier et dossier minutieusement. Chaque fois que j'ai importé quelques fichiers, j'ai vérifié et la coloration syntaxique a toujours fonctionné. Même après le dernier d'entre eux, c'était toujours le cas. Puis j'ai frappé la construction qui a échoué parce que j'ai oublié d'inclure quelques fichiers d'en-tête communs dans le fichier projet .pch qui étaient là dans l'ancien projet. Et c'est à ce moment-là que CodeSense a encore cassé. Après un examen plus approfondi, nous avons constaté que si vous importez un fichier d'en-tête qui importe à son tour le même fichier d'en-tête de structure que le .pch, CodeSense se casse. La même configuration n'a pas causé de problèmes dans Xcode 3.

Exemple:

project.pch

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

projectConfig.h

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

Donc, en supprimant le totalement inutile

#import <Foundation/Foundation.h> 

directive de la « projectConfig. h 'vous pouvez corriger la surbrillance et la complétion du code reviendra pour vous aussi. Si votre problème est le même que le mien.

+0

Wow, merci! Je commençais à devenir fou avec ça. – nebs

+0

oui ... juste eu le même problème ... et la solution de rage l'a corrigé. – crosscode

+4

Pourquoi cela n'est-il pas voté dans la stratosphère?Je n'ai pas pris la peine de nettoyer tous mes problèmes d'en-tête et j'ai juste désactivé l'option Precompile Prefix Header pour ma cible et tout va bien. Enfin, je peux faire passer l'équipe entière à 4.2 puisque c'est là que nous avons cassé. –

5

J'ai trouvé que le meilleur moyen de retrouver la syntaxe est de quitter Xcode et de le relancer. Je ne pourrais pas vous dire pourquoi, mais cela fonctionne à chaque fois.

+0

Pour moi, il a même suffi de rouvrir le projet. – thgc

+0

Comment c'est fou! Non seulement a-t-il corrigé la mise en évidence de la catégorie qui précédemment échouait également commencé à travailler – Judioo

+1

ne fonctionne pas dans xcode> = 5 – user2159978

145

1.) Aller au projet -> Créer Paramètres -> En-tête des chemins de recherche

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

3.) Fermer et recharger le projet

4.) Aller à Xcode -> fenêtre -> Agenda -> Projets -> $ YourProject -> Supprimer données dérivées

5.) Attendez un moment jusqu'à ce que XCode reconstruire tous indicies


Pour obtenir plus d'informations activer la journalisation détaillée:

1.) Augmenter le niveau du journal de Xcode dans l'application Terminal: defaults write com.apple.dt.Xcode IDEIndexingClangInvocationLogLevel 3

2.) Ouvrez l'application Console. Chercher « Xcode »

3.) J'ai vu des erreurs « fichier introuvable » pour les fichiers d'en-tête mentionnés dans le fichier pch (donc le fix ci-dessus)

+2

la deuxième partie de votre réponse a été très utile !! –

+2

Mon expérience dans les laboratoires à la WWDC cette année était si vous voulez que la coloration syntaxique fonctionne, désactivez complètement la pré-compilation ... cela a fonctionné pour moi mais semble être une correction inadéquate bien que – Stew

+0

Merci, @Lars schneider. C'est sympa. – Tirth

0

je fais l'expérience de cette question aussi bien, et ont essayé les solutions soit "reconstruire l'index", "relancer XCode", "changer le réglage du compilateur à LLVM GCC 4.2". Ceux-ci ne m'ont pas aidé.

J'ai donc essayé d'ajouter le code suivant immédiatement avec la nouvelle création du fichier d'en-tête. Ensuite, le code ajouté plus tôt dans le fichier d'en-tête est colorisé, et il peut reconnaître des classes et d'autres choses.

J'ai utilisé cocos2d-x, donc ma syntaxe est basée sur C++. Je ne l'ai pas encore testé avec Objective-c.

3

je trouve que ce qui suit se souvent faire l'affaire ...

"Resélectionnez" à la fois "SDK base" - et "Architecture" - dans "Build Settings". (Cliquez sur l'icône du projet bleu en haut à gauche, en mode "Navigateur", alias , puis cliquez sur Paramètres du projet et modifiez les paramètres ici.

Assurez-vous tous en ligne/il ne fait pas de mal à faire un peu toggly-wogglying en là, pendant que vous êtes là ... tu sais mélanger juste un peu. Vous remarquerez que xCode a un mini-stroke minuscule - chaque fois que vous passez de 64 à 32 bits ... C'est généralement quand je sais si la surbrillance du code est morte pour la nuit, ou si je suis prêt à partir.

Souvent, je vais avoir un projet qui est mis en surbrillance instantanément en mode 32 bits, et il se trouve juste là en 64 ... Qui sait .. Ahh, Xcode, vous bottez farfelu.

+1

La réponse m'a beaucoup aidé et a travaillé ... Mais votre style d'écriture pourrait être amélioré :) – Qualcuno

2

Je peux confirmer un 100% fix for this problem, based on a question I had asked (et effectivement répondu), comme sur la photo ci-dessous. Une chose que j'ajouterai est que parfois c'est un "espace errant" qui peut aussi contribuer à la perte de la mise en évidence. Nettoyez-le vous-même ou utilisez le plug-in Goggle Toolbox for Mac Xcode 4, qui ajoute une entrée dans le menu XCode Edit appelé Clean Up Whitespace.

enter image description here enter image description here

1

Pour moi, ce fut que je renomme mon projet, et Tests cible était toujours pointée vers l'ancien emplacement de pch, mais mon objectif App pointait vers le nouveau.

Si le délégué de votre application a toujours le sens du code, cela pourrait également être le cas pour vous. Allez dans le projet, sélectionnez le 'préfixe' de la recherche cible 'Tests' et réglez-le sur la valeur équivalente dans la cible 'app'.

2

Cela semble être une erreur similaire de ce question

j'ai pu corriger ce problème en mettant à Precompile Prefix HeaderNo dans les paramètres de construction.

3

Sélectionnez votre projet -> onglet Paramètres de construction -> Apple LLVM Language 5.0 -> Précompilez l'en-tête de préfixe à YES. NSLog ne soulignait pas. Actuellement en cours d'exécution Xcode 5.0.1 Espérons que ça aide =) Merci @rebelzach

0

Pour quelqu'un qui ne sait toujours pas pourquoi. Laissez ouverte avec XCode 8.2, il devrait fonctionner