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?


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];

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.


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.


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


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:


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


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.


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


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


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.