Funções de localização de chamadas do Xcode

117

No Xcode, como posso encontrar todas as funções do chamador de uma função específica?

genesys
fonte
2
A propósito, anexei uma imagem à minha resposta. e as versões XCode hoje em dia suportam isso. você estaria disposto a votar / aceitar uma resposta, se estiver satisfeito com alguma das respostas?
David T.
A resposta de @uiroshan abaixo é mais conveniente se você fizer isso com
frequência

Respostas:

125

O Xcode 4.5 (em beta) tem essa funcionalidade. ao destacar, digamos ... uma função, você pode verificar o "chamador" e o "receptor"

editar, acredito que esteja localizado no canto superior esquerdo do painel de arquivo desse arquivo ... então clique duas vezes na função para realçá-la e clique nas opções do painel de arquivo (aquele que tem o "abrir recente, abrir não salvo ... etc "drop down

EDITAR # 2

aqui está uma imagem para esclarecer (já que eu não sei como esse botão de menu é chamado) insira a descrição da imagem aqui:

TAMBÉM - XCode 4.5 não é mais beta, eu acredito, e está realmente disponível ao público

EDITAR # 3

Observe também que esse chamador NÃO pesquisa por ser chamado no performSelectormétodo, como em, o chamador específico que tem isso performSelectornão aparecerá se você tiver feito algo como:

[self performSelector:@selector(checkIfShouldStopMovement) withObject:nil afterDelay:0.25];
David T.
fonte
5
Na verdade, é Exibir-> Editor padrão-> Mostrar itens relacionados, veja minha resposta ( stackoverflow.com/a/13472334/888091 ).
pille de
2
@pille Ah. Eu vejo, eu não sabia que você pode acessá-lo dessa forma. Eu votei sua resposta e editei minha resposta para mostrar o caminho da IU. Obrigado pelo atalho !!
David T.
55

No XCode 4.5, o método mais rápido é este:

  1. Selecione o método no código (clique duas vezes ou marque com o cursor do mouse)
  2. Pressione Ctrl+1
  3. Selecione "Chamadores" no menu pop-up.

Este é o atalho para ir Exibir-> Editor padrão-> Mostrar itens relacionados no menu de título do XCode.

pille
fonte
1
O menu Chamadores também é sensível ao contexto, portanto, você não precisa selecionar o método primeiro. Basta colocá-lo em qualquer lugar dentro do método que você deseja ver os chamadores antes de chamar o atalho <kbd> Ctrl </kbd> + <kbd> 1 </kbd>.
Jay
Legal, não sabia disso!
pille
2
Não acredito que não haja maneira mais rápida ... Estou bastante decepcionado com o Xcode depois de usar o IntelliJ
stevo.mit
35

use a combinação de teclas ⌘ + Ctrl + Shift + H no XCode 7 em diante.

Uiroshan
fonte
2
Bela solução. Obrigado!
Myxtic 01 de
O cursor deve estar no nome da função.
Ali Momen Sani
Caso você tenha editado seus atalhos: pesquise "Find call hierarchy"
brainray
4
Vou quebrar meus dedos para apertar essa combinação!
Accid Bright
Obrigado, estou procurando esse tipo de solução.
Hitesh Agarwal
23

Ele também pode ser acessado por meio do editor assistente, conforme mostrado na imagem abaixo. Qualquer método em que você tenha o ponto de inserção no editor principal à esquerda, terá seus chamadores exibidos no editor assistente. Descobri que esta é a melhor maneira de examinar cada chamador em sucessão, pois, depois de selecionar "Chamadores", você pode selecionar o próximo chamador por meio do próximo menu pop-up à direita na barra de salto.

insira a descrição da imagem aqui

Brian Webster
fonte
Isso é ótimo - mas demorei um pouco para descobrir como começar. Para outros me seguindo: observe que na captura de tela de Brian, o menu suspenso aberto não é o menu "Mostrar itens relacionados" (ctrl + 1) mencionado em algumas outras respostas. Em vez disso, no editor assistente, clique no menu suspenso à direita do botão "Avançar" e escolha Chamadores.
Ashley
1
Você não precisa usar o editor assistente. Você pode abrir o mesmo menu no editor principal.
funroll de
18

No Xcode-7 você tem a funcionalidade de obter call-heirerchy. Clique com o botão direito na função e clique em "Localizar hierarquia de chamada": referência da imagem:

user18853
fonte
4
é chamado de "Hierarquia de chamada" e o atalho de teclado é: CTRL-SHIFT-COMMAND-H (enquanto algo está selecionado).
Sr. Zystem
7

O Xcode 10 para cima parece ter facilitado. Apenas Command Clique na função e você deverá vê-la no menu suspenso.

insira a descrição da imagem aqui

king_T
fonte
4

Use Encontrar no Projeto como Texto ou como Símbolo.

AFAIK, não há equivalente, por exemplo, a Hierarquia de chamadas conhecida do Eclipse ou NetBeans.

Adam Woś
fonte
1
Existem "chamador" e "receptor" no xCode.
4

Pressione o ⌘+Ctrl+Shift+Hatalho quando um método de interesse for selecionado (com um mouse ou cursor). (conforme a resposta de @uiroshan)

Mas você também pode especificar qualquer outro atalho em XCode -> Preferences -> Key Bindings

Selecione um método e use ⌘ + Ctrl + Shift + H.  Mas você também pode especificar outro atalho em XCode -> Preferências -> Atalhos de Teclas

drpawelo
fonte
1
Eu pessoalmente uso ⌘ + H (você terá que cancelar a atribuição de 'Ocultar XCode' primeiro. Basta digitar "Ocultar" na caixa Filtro, selecionar e excluir com Backspace)
drpawelo
2

Estranhamente, a ferramenta de refatoração pode detectar todas as chamadas de método, mas não a pesquisa.

Então, eu simplesmente o uso para renomear meu método com um nome exclusivo (por exemplo, redefinir para resetPlayer) e, em seguida, uso o novo nome em uma pesquisa textual normal.

1.) Menu> Editar> Refatorar ...> Renomear para um nome exclusivo

2.) pesquise o novo nome

Obiwahn
fonte
Você também pode apenas revisar todos os locais que seriam modificados na visualização, sem realmente terminar a operação de refatoração.
funroll de