2010-01-10 5 views
110

Dans Xcode, comment trouver toutes les fonctions d'appelant d'une fonction spécifique?Fonctions Xcode find caller

+2

Soit dit en passant, j'ai joint une image à ma réponse. et les versions XCode supportent cela aujourd'hui. seriez-vous prêt à upvote/accepter une réponse, si vous êtes satisfait de l'une des réponses? –

+0

La réponse de @uiroshan ci-dessous est la plus pratique si vous le faites beaucoup (⌘ + Ctrl + Maj + H) – ripegooseberry

Répondre

4

Utilisez Rechercher dans le projet comme texte ou comme symbole.

AFAIK, il n'y a pas d'équivalent par ex. Call Hierarchy connu d'Eclipse ou NetBeans.

+1

Il y a "appelant" et "appelé" dans xCode. –

3

Etrangement l'outil de refactoring peut détecter tous les appels de méthode mais pas la recherche.

Donc je l'utilise simplement pour renommer ma méthode en un nom unique (par exemple, réinitialiser à resetPlayer) et ensuite utiliser le nouveau nom dans une recherche textuelle régulière.

1.) Menu> Edition> Refactor ...> Renommer pour nom unique

2.) rechercher le nouveau nom

+0

Vous pouvez également passer en revue tous les endroits qui seraient modifiés dans l'aperçu, sans réellement terminer l'opération de refactor. – funroll

123

Xcode 4.5 (en version bêta) dispose de cette fonctionnalité. quand vous mettez en surbrillance dire ... une fonction, vous pouvez vérifier le « appelant » et « appelé »

modifier Je crois qu'il est situé en haut à gauche du panneau de fichier pour ce fichier ... donc double-cliquez sur la fonction de mettre en évidence, et vous cliquez sur les options du panneau de fichier (celui qui a le « ouvert récemment, ouvert non enregistré ... etc » déroulant

EDIT # 2

est ici une image pour clarifier (puisque je ne sais pas ce que ce bouton de menu est appelé) enter image description here:

AUSSI - XCode 4.5 est pas bêta plus, je crois, et est en fait en public

EDIT # 3

noter également que cette chose de l'appelant ne cherche pas à être appelé selon la méthode performSelector, comme, l'appelant particulier qui a cette performSelector ne sera pas affiché si vous aviez fait quelque chose comme:

[self performSelector:@selector(checkIfShouldStopMovement) withObject:nil afterDelay:0.25]; 
+5

C'est en fait View-> Standard Editor-> Afficher les éléments connexes, voir ma réponse (http://stackoverflow.com/a/13472334/888091). – pille

+2

@pille Ah. Je vois, je ne savais pas que vous pouviez y accéder de cette façon. J'ai upvoted votre réponse, et j'ai édité ma réponse pour montrer l'interface utilisateur. Merci pour le raccourci !! –

50

XCode 4.5, la méthode la plus rapide est la suivante:

  1. Sélectionner la méthode dans le code (double-clic ou marquer à l'aide de votre curseur de la souris)
  2. Appuyez sur Ctrl +
  3. Sélectionnez « personnes qui appellent "dans le menu contextuel.

Ceci est le raccourci pour aller Affichage-> Éditeur Standard-> Afficher les éléments connexes dans le menu de titre de XCode.

+1

Le menu Appelants est également sensible au contexte, vous n'avez donc pas besoin de sélectionner la méthode en premier. Il suffit de le placer n'importe où dans la méthode pour laquelle vous voulez voir les appelants avant d'appeler le raccourci Ctrl + . – Jay

+0

Doux, je ne le savais pas! – pille

+1

Je ne peux pas croire qu'il n'y a pas de manière plus rapide ... Je suis assez déçu avec le Xcode après avoir utilisé IntelliJ –

23

Ceci peut également être consulté via l'éditeur adjoint, comme le montre la capture d'écran ci-dessous. Quelle que soit la méthode dans laquelle vous avez inséré le point d'insertion dans l'éditeur principal sur la gauche, les appelants seront affichés dans l'éditeur de l'assistant.J'ai trouvé que c'était la meilleure façon de regarder successivement chaque appelant, car une fois que vous avez sélectionné "Appelants", vous pouvez sélectionner l'appelant suivant via le menu local suivant dans la barre de défilement.

enter image description here

+0

C'est génial - mais il m'a fallu un certain temps pour comprendre comment commencer. Pour les autres qui me suivent: notez que dans la capture d'écran de Brian, la liste déroulante ouverte est _not_ le menu "Afficher les éléments connexes" (ctrl + 1) mentionné dans d'autres réponses. Au lieu de cela, dans l'éditeur de l'assistant, cliquez sur la liste déroulante à droite du bouton "Aller de l'avant", et choisissez Appels. – Ashley

+0

Vous n'avez pas besoin d'utiliser l'éditeur assistant. Vous pouvez ouvrir le même menu dans l'éditeur principal. – funroll

15

Dans Xcode-7 vous avez la fonctionnalité d'obtenir appel heirerchy. Faites un clic droit sur la fonction et cliquez sur « Rechercher Hiérarchie d'appel »: image reference:

+4

il s'appelle "Call Hierarchy" et le raccourci clavier est: CTRL-SHIFT-COMMAND-H (alors que quelque chose est sélectionné). – Wizfinger

23

utilisation ⌘ + Ctrl + Maj + H combinaison de touches sur XCode 7 partir.

+2

plus comme Xcode Raccourci vers RSI – Vlad

+1

Belle solution. Je vous remercie! – Myxtic

+0

Le curseur doit être sur le nom de la fonction. –

3

Appuyez sur ⌘+Ctrl+Shift+H raccourci lorsqu'une méthode d'intérêt est sélectionnée (avec une souris ou un curseur). (Selon la réponse de @uiroshan de)

Mais vous pouvez aussi spécifier un autre raccourci dans XCode -> Preferences -> Key Bindings

Select a method and use ⌘+Ctrl+Shift+H. But you can also specify another shortcut in XCode -> Preferences -> Key Bindings

+1

Personnellement, j'utilise ⌘ + H (il faut d'abord le désaffecter de 'Hide XCode', il suffit de taper "Hide" dans la zone Filter, sélectionnez-le et supprimez avec Backspace) – ripegooseberry