web-dev-qa-db-fra.com

XCode 4: Auto-Complete et Aller à la définition brisée dans mon projet Xcode 3

Mon projet a été créé dans Xcode 3, je l'ouvre dans Xcode 4 et remarquez ce qui suit:

  • "sauter à la définition" ne fonctionne plus avec mes propres symboles (cependant ui * et même tt * symboles fonctionne bien!)
  • Complet automatique/"Sens de code" est aussi mauvais que Xcode 3, c'est-à-dire que cela suggère tout
  • Les classes de mes projets ne se présentent pas dans la classe Navigator (à nouveau, le système et trois 20 classes font apparaître!)

Lors de la création d'un nouvea Xcode 4, ces fonctionnalités DO semblent fonctionner. Malheureusement, la seule solution de contournement semble être de recréer le projet et de tout réimporter. Ce projet est trop grand!

choses que j'ai essayées :

  • Suppression des données dérivées dans l'organisateur
  • Nettoyer le projet
  • Installation des deux versions de Xcode 4 Gold et des versions finales

Mise à jour

  • Ce bogue a non a été résolu dans Xcode 4.0.1.
43
Jimmy

Dans notre cas, le coupable s'est avéré être une ancienne version des trois20 Libs. Pour que le projet travaille, je devais:

  1. Supprimer toutes les références à trois20 du projet
  2. Suivez les instructions à http://three20.info/article/2011-03-10-xcode4-support

Dès que la nouvelle bibliothèque a été installée, Xcode4 revient automatiquement. L'achèvement du code, Aller à la définition et même le refacteur tout fonctionne maintenant. La joie (TM) de travailler avec Xcode est de retour! :)

En plus de termes généraux, toute bibliothèque qui met les fichiers d'en-tête informatiques dans Constractive_Product_Dir aura probablement des problèmes similaires.

1
Maria Zverina

Sur -fenêtre menu:

  1. organisateur
  2. onglet Projets
  3. Votre projet
  4. Supprimer des données dérivées
  5. redémarrez xcode

Un petit conseil de la réponse de l'autre:

Après l'étape.4 Ne reconstruisez pas le projet, mais simplement redémarrer Xcode.

67
xhan

Qu'est-ce qui a fonctionné pour moi quand j'ai perdu Xcodes Super Nice Code ASIMINANT était:

fenêtre (Menu) -> Organisateur (Menu) -> Projets (onglet)

alors

Appuyez sur Supprimer les données dérivées (c'est la même chose que d'aller dans le dossier et de la supprimer manuellement)

mais !!!!! à cette étape ne reconstruis pas mais fermez Xcode et rouvrez le projet. Cela a fonctionné pour moi.

16
yeahdixon

J'ai eu le même problème dans la version finale Xcode 4 aujourd'hui, en travaillant avec mon ancien projet Xcode 3. Le problème est lié à un index des symboles que Xcode crée. Il devrait créer un nouvel index pour vous automatiquement, mais il semble prendre beaucoup de temps dans Xcode 4. Une solution possible consiste à aller à ~/Bibliothèque/Développeur/Xcode/DeriveData et supprimer l'ancien index. Redémarrez Xcode et vous devriez le voir indexer. Pour 'Aller à la définition', vous pouvez maintenir la commande et la souris sur une méthode ou un nom de classe, et vous devriez voir les soulignements bleus, comme des hyperliens. Ensuite, vous pouvez cliquer dessus pour passer à la définition.

7
gstroup

EDIT: Il semble que si vous avez des chemins de recherche de l'en-tête personnalisés pour prendre en charge plusieurs cibles avec le code partagé Xcode 4 L'indexation de l'indexation de l'indexation de 4 décompose et ensuite adjointe et codesense avec elle. J'ai soulevé cela comme #id 9182099 avec Apple. Il existe également un problème que si vous rencontrez des paramètres contradictoires entre les paramètres de construction de projets globaux et spécifiques à la cible, l'index ne fonctionnera pas correctement. Assurez-vous que vos paramètres de construction sont cohérents.

Je viens de faire ce problème dans un très grand projet commercial multin cible. En tant que douleur supplémentaire, tous les fichiers XIB n'afficheraient pas le contrôleur de la vue Assistante et aucune des vues adjointes de sous-classe/Superclass/SiBling/Catégories ne fonctionnerait non plus.

Après de nombreuses recherches et expérimentées avec la suppression des index, etc., j'ai été obligé de créer un nouveau projet vide et de réimporter tout. Je sais que vous avez dit que votre projet est trop gros pour cela, mais je ne pense pas qu'il y ait une autre option disponible. En fin de compte, cela m'a pris la majeure partie d'une journée pour migrer complètement mon projet. Je suppose que vous pourriez être espérons-le pour une résolution dans une version de point future, mais j'ai choisi de mordre la balle maintenant pour bénéficier de la productivité augmente des nouvelles fonctionnalités.

Pour y parvenir, j'ai créé un nouveau projet "vide" et j'ai recréé manuellement les objectifs dont j'avais besoin. J'ai ensuite supprimé les fichiers source et .plist des nouvelles cibles me laissant à nouveau avec un projet vide avec les trois objectifs dont j'avais besoin.

J'ai alors juste sélectionné "Ajouter des fichiers". "Au projet un dossier à une liaison horaire contre la cible au besoin. Je me suis arrêté et j'ai construit chaque cible comme il a été importé pour faire face à toutes les erreurs de compilateur que le dernier clang m'a donné.

Si vous avez une hiérarchie de groupe complexe qui n'est pas mappée sur une structure de dossiers de système de fichiers, vous devez soit recréer les groupes après avoir importé, soit passer par le processus douloureux de déplacer tous vos fichiers en sous-dossiers et de repousser les références dans XCode.

Vous aurez également besoin de vérifier soigneusement tous les paramètres de construction personnalisés dans les objectifs, ainsi que des bibliothèques que vous incluez. Assurez-vous également que vous supprimez les fichiers .Plist en gros importés de la liaison cible.

Désolé si ce n'est pas la réponse que vous aviez espérée.

7
Rick

http://three20.info/article/2011-03-10-xcode4-support a fonctionné pour moi. Effacer spécifiquement le répertoire de construction de trois20. Étrangement, cela fonctionnait même lorsque ladite construction a été faite en Xcode4. Codesense a commencé à travailler au moment où j'ai effacé le Dir de trois20, je n'avais même pas besoin de recompiler ou de recharger le projet.

4
GreatWiz

Cela vient de travailler pour moi:

  • Ouvrez votre projet Xcode.
  • Ouvrez une invite de commande dans votre répertoire de projet et tapez:

    touch MyProject.xcodeproj/project.pbxproj

  • Surveillez la coloration de la syntaxe et d'autres trucs sont fixes avant vos yeux.

  • Réouvrez votre projet (ou ajustez un paramètre de projet) si les schémas de votre projet sont réinitialisés à "My Mac" pour les projets IOS.
2
Christopher Rogers

J'ai corrigé le problème en supprimant les données dérivées dans l'organisateur, en cours d'exécution touch MyProject.xcodeproj/project.pbxproj et réouvert le projet. Après l'ouverture de la ré-ouvrite, cela a commencé à indexer, puis il travaillait à nouveau.

2
k3a

Ajout de cela comme un commentaire dans quelques endroits également, alors peut-être que Google Juice aidera à faire de nouveau des programmeurs ... mais de toute façon, j'ai trouvé si vous utilisez simplement la commande touch sur le YourAppName-Prefix.pch Fichier Il obtiendra la surbrillance de la syntaxe/la coloration et la fin des codes/sauvegardez sans avoir à supprimer toutes vos données dérivées ou redémarrez Xcode. J'ai fait cela un alias dans mon fichier .bashrc.

alias pch_touch='touch /path/to/your/apps/Prefix.pch'

. ~/.bashrc

Dans environ 1-2 secondes de toucher le fichier PCH, la coloration de la syntaxe revient, qui est un code de signalisation achèvement/saut de saut qui fonctionnera également également. Une sorte de triste outil puissant aussi génial est humilié par des bugs de métadonnées/d'étage, mais y a-t-il. Au moins, cela vous rassose et arrête de perdre votre temps.

1
Eric Goldberg

De - Ce commentaire ici J'ai pu déboguer un problème similaire avec mon projet, il semblait être d'un drapeau de mauvaise-personne que le préprocesseur de Clang ne reconnaissait pas correctement. Fondamentalement, courir

defaults write com.Apple.dt.Xcode IDEIndexingClangInvocationLogLevel 3

dans le terminal augmente la verbosité de l'indexeur et devrait vous aider à suivre les problèmes. Exécutez la console.app et recherchez IDEIndexingClang.

0
damian

J'ai eu ce même problème. J'ai un projet avec un groupe de fichiers de visiteuse qui prolonge une classe, j'appelle BaseviewController. J'ai ajouté le code suivant à basseviewController.h et Syntaxe Coloriage et code automatique Autocomplètes Broke! Même avec des suppressions répétées de données dérivées, le problème était toujours là. Je ne peux pas y croire !!

@implementation UIView (FindFirstResponder)
- (UIView *)findFirstResponder
{
    if (self.isFirstResponder) {
        return self;
    }

    for (UIView *subView in self.subviews) {
        UIView *firstResponder = [subView findFirstResponder];

        if (firstResponder != nil) {
            return firstResponder;
        }
    }

    return nil;
}
@end

Commentant ce code résolu mes problèmes! J'ai xcode version 4.4.1 (4f1003)

0
portforwardpodcast

En ce qui concerne "sauter à la définition", essayez de cliquer sur le bouton de sélection de schéma (celui situé près du haut à droite de la fenêtre qui affiche une liste des constructions, périphériques et simulateurs) puis cliquez sur Retour dans l'éditeur de code et essayez de cliquer sur la commande. ou "sauter à la définition" à nouveau.

J'ai récemment constaté que chaque fois que "sauter à la définition" cesse de travailler, je peux le faire et ça marche à nouveau pendant un certain temps. Ce n'est pas une solution mais a été une solution de contournement utile.

0
John Lemberger

Je ne sais pas si cela aide quelqu'un, mais j'ai reçu l'indexation du code de mon projet C++ cassé lorsque je suis passée à Xcode 4. Je n'ai pas changé de lion, donc j'ai toujours la version 4.02. Lors de la création du projet dans Xcode, j'utiliserais l'option de construction externe, cela n'a pas été correctement ajouté correctement le coffre_search_paths. J'ai trouvé cela en utilisant:

   cmake -G Xcode . 

pour générer le projet Xcode, définit cette variable correctement et active l'indexation de l'ensemble du projet.

0
Jim M.

J'ai eu le même problème ici. Pas de liens de définition, de sens du code ou de la syntaxe de la syntaxe. L'élimination des données dérivées n'a pas fonctionné et même la création d'un nouveau projet n'a rien fait de différence. Bien que ce ne soit peut-être pas le même problème que vous avez, nettoyez les paramètres de construction (de manière à ce qu'il n'y ait pas de conflit entre projet et cibles) comme Rick dit résolu pour moi (bien que je ne sache toujours pas quel (s) réglage était/causaient le problème).

0
Sacha