Fonctions de recherche de l'appelant Xcode


117

Dans Xcode, comment puis-je trouver toutes les fonctions de l'appelant d'une fonction spécifique?


2
Au fait, j'ai joint une image à ma réponse. et les versions XCode le prennent aujourd'hui en charge. Seriez-vous prêt à voter pour / accepter une réponse, si vous êtes satisfait de l'une des réponses?
David

La réponse de @uiroshan ci-dessous est plus pratique si vous faites cela beaucoup (⌘ + Ctrl + Shift + H)
drpawelo

Réponses:


125

Xcode 4.5 (en version bêta) a cette fonctionnalité. lorsque vous mettez en surbrillance dire ... une fonction, vous pouvez cocher «l'appelant» et «l'appelé»

modifier je crois qu'il est situé en haut à gauche du panneau de fichiers pour ce fichier ... alors double-cliquez sur la fonction pour la mettre en surbrillance, et vous cliquez sur les options du panneau de fichiers (celui qui a le "ouvert récent, ouvert non enregistré ... etc "déroulant

MODIFIER # 2

voici une image pour clarifier (puisque je ne sais pas comment s'appelle ce bouton de menu) entrez la description de l'image ici:

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

MODIFIER # 3

notez également que cet appelant ne recherche PAS l'appel sous la performSelectorméthode, comme dans, l'appelant particulier qui a ceci n'apparaîtra pas performSelectorsi vous avez fait quelque chose comme:

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

5
C'est en fait View-> Standard Editor-> Show Related Items, voir ma réponse ( 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 voté pour votre réponse et j'ai modifié ma réponse pour montrer le chemin de l'interface utilisateur. Merci pour le raccourci !!
David T.20

55

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

  1. Sélectionnez la méthode dans le code (double-cliquez ou marquez à l'aide du curseur de votre souris)
  2. Appuyez sur Ctrl+1
  3. Sélectionnez "Appelants" dans le menu contextuel.

C'est le raccourci pour accéder à Affichage-> Éditeur standard-> Afficher les éléments associés dans le menu de titre de XCode.


1
Le menu Appelants est également sensible au contexte, vous n'avez donc pas à sélectionner la méthode en premier. Placez-le simplement n'importe où dans la méthode pour laquelle vous voulez voir les appelants avant d'appeler le raccourci <kbd> Ctrl </kbd> + <kbd> 1 </kbd>.
Jay

Doux, je ne savais pas ça!
pille

2
Je ne peux pas croire qu'il n'y a pas de moyen plus rapide ... Je suis assez déçu par le Xcode après avoir utilisé IntelliJ
stevo.mit le

35

utilisez la combinaison de touches ⌘ + Ctrl + Maj + H à partir de XCode 7.


2
Belle solution. Je vous remercie!
Myxtic du

Le curseur doit être sur le nom de la fonction.
Ali Momen Sani

Si vous avez modifié vos raccourcis: recherchez "Trouver la hiérarchie des appels"
brainray

4
Je vais me casser les doigts pour appuyer sur cette combinaison!
Accid Bright

Merci, je recherche ce genre de solution.
Hitesh Agarwal

23

Ceci est également accessible via l'éditeur assistant, comme indiqué dans la capture d'écran ci-dessous. Quelle que soit la méthode dans laquelle vous avez le point d'insertion dans l'éditeur principal sur la gauche, ses appelants seront affichés dans l'éditeur assistant. J'ai trouvé que c'était la meilleure façon de parcourir chaque appelant l'un après l'autre, car une fois que vous avez sélectionné "Appelants", vous pouvez sélectionner le prochain appelant via le menu contextuel suivant à droite dans la barre de saut.

entrez la description de l'image ici


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 n'est pas le menu "Afficher les éléments associés" (ctrl + 1) mentionné dans certaines autres réponses. Au lieu de cela, dans l'éditeur assistant, cliquez sur le menu déroulant à droite du bouton «Aller de l'avant» et choisissez Appelants.
Ashley

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

18

Dans Xcode-7, vous avez la fonctionnalité d'obtenir call-heirerchy. Faites un clic droit sur la fonction et cliquez sur "Rechercher la hiérarchie des appels": référence de l'image:


4
cela s'appelle "Hiérarchie des appels" et le raccourci clavier est: CTRL-SHIFT-COMMAND-H (pendant que quelque chose est sélectionné).
Mr. Zystem

7

Xcode 10 vers le haut semble avoir rendu les choses plus faciles. Commandez simplement Cliquez sur la fonction et vous devriez la voir dans le menu déroulant.

entrez la description de l'image ici


4

Utilisez Rechercher dans le projet sous forme de texte ou de symbole.

AFAIK, il n'y a pas d'équivalent, par exemple, à la hiérarchie des appels connue d'Eclipse ou de NetBeans.


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

4

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

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

Sélectionnez une méthode et utilisez ⌘ + Ctrl + Maj + H.  Mais vous pouvez également spécifier un autre raccourci dans XCode -> Préférences -> Liaisons de touches


1
J'utilise personnellement ⌘ + H (vous devrez d'abord le désassigner de 'Hide XCode'. Tapez simplement "Hide" dans la boîte de filtre, sélectionnez-le et supprimez-le avec Backspace)
drpawelo

2

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

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

1.) Menu> Edition> Refactoriser ...> Renommer en nom unique

2.) recherchez le nouveau nom


Vous pouvez également simplement revoir tous les endroits qui seraient modifiés dans l'aperçu, sans pour autant terminer l'opération de refactorisation.
funroll

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.