Xcode trova le funzioni del chiamante


117

In Xcode, come posso trovare tutte le funzioni del chiamante di una funzione specifica?


2
A proposito, ho allegato un'immagine alla mia risposta. e le versioni XCode oggigiorno lo supportano. saresti disposto a votare / accettare una risposta, se sei soddisfatto di una qualsiasi delle risposte?
David T.

La risposta di @uiroshan di seguito è più conveniente se lo fai spesso (⌘ + Ctrl + Maiusc + H)
drpawelo

Risposte:


125

Xcode 4.5 (in beta) ha questa funzionalità. quando evidenzi di dire ... una funzione, puoi selezionare "chiamante" e "chiamato"

modifica credo che si trovi in ​​alto a sinistra del pannello dei file per quel file ... quindi fai doppio clic sulla funzione per evidenziarla e fai clic sulle opzioni del pannello dei file (quella che ha "apri recente, apri non salvato ... ecc "a discesa

MODIFICA # 2

ecco un'immagine per chiarire (dato che non so come si chiama questo pulsante del menu) inserisci qui la descrizione dell'immagine:

INOLTRE - XCode 4.5 non è più beta, credo, ed è attualmente in pubblico

MODIFICA # 3

nota anche che questa cosa del chiamante NON cerca di essere chiamata con il performSelectormetodo, come in, il particolare chiamante che ha questo performSelectornon verrà visualizzato se hai fatto qualcosa come:

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

5
In realtà è Visualizza-> Editor standard-> Mostra elementi correlati, vedi la mia risposta ( stackoverflow.com/a/13472334/888091 ).
pille

2
@pille Ah. Capisco, non sapevo che potessi accedervi in ​​quel modo. Ho votato positivamente la tua risposta e ho modificato la mia risposta per mostrare l'interfaccia utente. Grazie per la scorciatoia !!
David T.

55

In XCode 4.5, il metodo più veloce è questo:

  1. Seleziona il metodo nel codice (fai doppio clic o contrassegna con il cursore del mouse)
  2. Premi Ctrl+1
  3. Seleziona "Chiamanti" dal menu a comparsa.

Questa è la scorciatoia per andare su Visualizza-> Editor standard-> Mostra elementi correlati nel menu del titolo di XCode.


1
Anche il menu Chiamanti è sensibile al contesto, quindi non è necessario selezionare prima il metodo. Posizionalo ovunque all'interno del metodo per il quale vuoi vedere i chiamanti prima di invocare la scorciatoia <kbd> Ctrl </kbd> + <kbd> 1 </kbd>.
Jay,

Dolce, non lo sapevo!
pille

2
Non riesco a credere che non ci sia un modo più veloce ... Sono piuttosto deluso
dall'Xcode

35

usa la combinazione di tasti ⌘ + Ctrl + Maiusc + H su XCode 7 in poi.


2
Bella soluzione. Grazie!
Myxtic

Il cursore deve essere sul nome della funzione.
Ali Momen Sani

Nel caso in cui hai modificato le scorciatoie: cerca "Trova gerarchia chiamate"
brainray

4
Mi romperò le dita per premere questa combinazione!
Accid Bright

Grazie, sto cercando questo tipo di soluzione.
Hitesh Agarwal

23

È possibile accedervi anche tramite l'assistente editor, come mostrato nello screenshot qui sotto. Qualunque sia il metodo in cui hai il punto di inserimento nell'editor principale a sinistra, i suoi chiamanti saranno visualizzati nell'assistente editor. Ho trovato che questo sia il modo migliore per esaminare ogni chiamante in successione, poiché una volta selezionato "Chiamanti", puoi selezionare il chiamante successivo tramite il menu a comparsa successivo a destra nella barra di scorrimento.

inserisci qui la descrizione dell'immagine


È fantastico, ma mi ci è voluto un po 'per capire come iniziare. Per gli altri che mi seguono: si noti che nello screenshot di Brian, il menu a discesa aperto non è il menu "Mostra elementi correlati" (ctrl + 1) menzionato in alcune altre risposte. Invece, nell'Assistente editor, fai clic sul menu a discesa a destra del pulsante "Vai avanti" e scegli Chiamanti.
Ashley

1
Non è necessario utilizzare l'assistente editor. Puoi aprire lo stesso menu nell'editor principale.
funroll

18

In Xcode-7 hai la funzionalità di ottenere call-heirerchy. Fare clic con il tasto destro sulla funzione e fare clic su "Trova gerarchia chiamate": riferimento immagine:


4
si chiama "Call Hierarchy" e la scorciatoia da tastiera è: CTRL-SHIFT-COMMAND-H (mentre qualcosa è selezionato).
Mr. Zystem

7

Xcode 10 in poi sembra aver reso tutto più semplice. Basta fare clic su comando sulla funzione e dovresti vederlo nel menu a discesa.

inserisci qui la descrizione dell'immagine


4

Usa Trova nel progetto come testo o come simbolo.

Per quanto ne so, non c'è equivalente ad es. Call Hierarchy noto da Eclipse o NetBeans.


1
Ci sono "chiamante" e "chiamato" in xCode.

4

stampa ⌘+Ctrl+Shift+H scorciatoia quando è selezionato un metodo di interesse (con un mouse o un cursore) (come da risposta di @uiroshan)

Ma puoi anche specificare qualsiasi altra scorciatoia in XCode -> Preferences -> Key Bindings

Seleziona un metodo e usa ⌘ + Ctrl + Maiusc + H.  Ma puoi anche specificare un'altra scorciatoia in XCode -> Preferenze -> Associazioni di tasti


1
Io personalmente uso ⌘ + H (dovrai prima disattivare l'assegnazione da "Nascondi XCode". Digita semplicemente "Nascondi" nella casella Filtro, selezionalo ed elimina con Backspace)
drpawelo

2

Stranamente lo strumento di refactoring può rilevare tutte le chiamate di metodo ma non la ricerca.

Quindi lo uso semplicemente per rinominare il mio metodo con un nome univoco (es. Reimposta su resetPlayer) e quindi uso il nuovo nome in una normale ricerca testuale.

1.) Menu> Modifica> Refactoring ...> Rinomina in nome univoco

2.) cerca il nuovo nome


Puoi anche rivedere tutti i luoghi che verrebbero modificati nell'anteprima, senza effettivamente terminare l'operazione di refactoring.
funroll

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.