Encontre referências de método no Xcode

174

Existe uma maneira no Xcode encontrar todos os locais onde um método ou propriedade foi chamado?

No Eclipse, por exemplo, você pode clicar com o botão direito do mouse em um método e selecionar Localizar referências . Existe algo semelhante no Xcode?

Java Ka Baby
fonte

Respostas:

252
  1. Selecione o método no qual você está interessado ou posicione o cursor de texto nele.
  2. Abra o menu "Arquivos relacionados" através do ícone na parte superior esquerda do Editor. (É o botão imediatamente à esquerda do botão Voltar).
  3. Vá para o submenu "Chamadores" para obter uma lista de todos os métodos que chamam o método selecionado e clique em qualquer um deles para ir para esse arquivo e método.

Em fotos...

Captura de tela das etapas 1 e 2 acima.

Captura de tela da etapa 3 acima

Algumas notas:

  • Você pode fazer isso também para propriedades.
  • Observe que quando você seleciona um método de chamada no menu Chamadores para ir para o local em que seu método foi chamado, o Xcode destaca apenas a primeira chamada. Cada método de chamada será exibido apenas na lista 'Chamadores' uma vez, mesmo que contenha muitas chamadas para o seu método. Portanto, se você estiver tentando fazer alterações em todos os lugares do aplicativo em que um método é chamado, tenha cuidado para não perder alguns em locais onde um método de chamada contenha duas chamadas para o método em que você está interessado.
Mark Amery
fonte
34
O atalho padrão para exibir o menu, ^1então normalmente eu sou capaz de pressionar ^1, c, enterpara exibir a lista.
Peter Theill
Isso localiza todos os chamadores do método e as implementações pai. Existe uma maneira de encontrar chamadores apenas dessa implementação?
Daniel Kaplan
1
@DanielKaplan Acho que não, já que em pelo menos alguns casos o compilador não terá como saber qual implementação deve ser chamada.
Mark Amery 5/05
Meu método é chamado init, e isso traz qualquer método chamado inittambém. Não tão inteligente ...
Nathan H
36

Sim, abra o editor Assistant e, em vez de contrapartes, selecione Chamadores.

insira a descrição da imagem aqui

Alex Terente
fonte
1
Você não precisa usar o editor de divisão para isso, embora possa ser conveniente se você estiver editando vários métodos de chamada em rápida sucessão. Veja minha resposta.
Mark Amery
18

No XCode 4.5, você pode clicar em "Mostrar opções de localização" no campo de pesquisa do Navegador de Pesquisa. Lá você pode especificar "Referências de símbolos"

insira a descrição da imagem aqui

SystematicFrank
fonte
2
Essa é uma pequena melhoria em relação a uma pesquisa simples, mas retorna todas as referências, não apenas a específica que você está procurando. Por exemplo, se você tem uma classe com uma propriedade "height", procurar por referências de símbolo em sua propriedade height retornará referências a todos os tipos de outras propriedades de altura que você usou, portanto, você ainda precisará examinar os resultados para encontrar os que deseja. quer. Para um hack que funciona razoavelmente bem ver este: stackoverflow.com/a/5457479/850721
Mike Lorenz
11

Selecione a função, pressione cmd-shift-A, "Chamadores"

insira a descrição da imagem aqui

Uladzimir
fonte
7

Coloque o ponto de inserção em uma invocação ou declaração de método e escolha Localizar> Localizar símbolo selecionado no projeto. Para seletores de várias partes, isso destacará apenas a primeira parte, mas a pesquisa parece funcionar de maneira relativamente confiável. Você também pode usar Localizar hierarquia de chamadas, que destaca a linha inteira.

O item de menu contextual correspondente (Localizar símbolo selecionado no espaço de trabalho) também funciona, mas é um pouco mais complicado fazer o trabalho corretamente. Certifique-se de que nenhum texto seja selecionado, caso contrário, ele procurará a palavra selecionada e não o seletor inteiro. Para fazer isso, você pode clicar com o botão esquerdo do mouse antes de clicar com o botão direito do mouse (ou clicar com a tecla Control pressionada) no mesmo local. Não existe esse problema com a hierarquia de chamadas de localização contextual.

Nicholas Riley
fonte
também é muito útil ter um atalho de teclado para o mesmo, a depuração fica muito mais rápida
Naishta
-11

Com o xcode 4, agora você pode clicar com o botão direito do mouse nas referências e selecionar "pular para a definição".

Scott Looze
fonte
12
Isso responde à pergunta oposta.
Richard