Xcode encuentra funciones de la persona que llama

117

En Xcode, ¿cómo puedo encontrar todas las funciones de llamada de una función específica?

genesys
fuente
2
Por cierto, adjunté una imagen a mi respuesta. y las versiones XCode hoy en día lo admiten. ¿Estaría dispuesto a votar a favor / aceptar una respuesta, si está satisfecho con alguna de las respuestas?
David T.
La respuesta de @uiroshan a continuación es más conveniente si hace esto mucho (⌘ + Ctrl + Shift + H)
drpawelo

Respuestas:

125

Xcode 4.5 (en beta) tiene esta funcionalidad. cuando resaltas decir ... una función, puedes marcar el "llamador" y el "destinatario"

editar Creo que está ubicado en la parte superior izquierda del panel de archivos para ese archivo ... así que haga doble clic en la función para resaltarlo, y haga clic en las opciones del panel de archivos (la que tiene el "abrir reciente, abrir sin guardar ... etc "desplegable

EDITAR # 2

aquí hay una imagen para aclarar (ya que no sé cómo se llama este botón de menú) ingrese la descripción de la imagen aquí:

TAMBIÉN - XCode 4.5 ya no es beta, creo, y en realidad está en público

EDITAR # 3

También tenga en cuenta que esta cosa de la persona que llama NO busca ser llamada bajo el performSelectormétodo, como en, la persona que llama en particular que tiene esteperformSelector no aparecerá si hubiera hecho algo como:

[self performSelector:@selector(checkIfShouldStopMovement) withObject:nil afterDelay:0.25];
David T.
fuente
5
En realidad, es Ver-> Editor estándar-> Mostrar elementos relacionados, consulte mi respuesta ( stackoverflow.com/a/13472334/888091 ).
pille
2
@pille Ah. Ya veo, no sabía que pudieras acceder a él de esa manera. He votado a favor tu respuesta y he editado mi respuesta para mostrar la forma de la interfaz de usuario. ¡Gracias por el atajo!
David T.
55

En XCode 4.5, el método más rápido es este:

  1. Seleccione el método en el código (haga doble clic o marque con el cursor del mouse)
  2. Presione Ctrl+1
  3. Seleccione "Personas que llaman" en el menú emergente.

Este es el atajo para ir a Ver-> Editor estándar-> Mostrar elementos relacionados en el menú de título de XCode.

pille
fuente
1
El menú Llamadas también es sensible al contexto, por lo que no es necesario que seleccione el método primero. Simplemente colóquelo en cualquier lugar dentro del método para el que desea ver a los llamadores antes de invocar el acceso directo <kbd> Ctrl </kbd> + <kbd> 1 </kbd>.
Jay
¡Dulce, no sabía eso!
pille
2
No puedo creer que no haya una forma más rápida ... Estoy bastante decepcionado con Xcode después de usar IntelliJ
stevo.mit
35

use la combinación de teclas ⌘ + Ctrl + Shift + H en XCode 7 en adelante.

Uiroshan
fuente
2
Hermosa solución. ¡Gracias!
Myxtic
El cursor debe estar en el nombre de la función.
Ali Momen Sani
En caso de que haya editado sus atajos: busque "Buscar jerarquía de llamadas"
brainray
4
¡Me romperé los dedos para presionar esta combinación!
Accid Bright
Gracias, estoy buscando este tipo de solución.
Hitesh Agarwal
23

También se puede acceder a esto a través del editor asistente, como se muestra en la captura de pantalla a continuación. Cualquiera que sea el método en el que tenga el punto de inserción en el editor principal a la izquierda, sus llamantes se mostrarán en el editor asistente. Descubrí que esta es la mejor manera de ver cada persona que llama en sucesión, ya que una vez que haya seleccionado "Personas que llaman", puede seleccionar la siguiente persona que llama a través del siguiente menú emergente a la derecha en la barra de salto.

ingrese la descripción de la imagen aquí

Brian Webster
fuente
Esto es genial, pero me tomó un tiempo descubrir cómo empezar. Para otros que me siguen: observe que en la captura de pantalla de Brian, el menú desplegable abierto no es el menú "Mostrar elementos relacionados" (ctrl + 1) mencionado en algunas otras respuestas. En su lugar, en el editor asistente, haga clic en el menú desplegable a la derecha del botón "Avanzar" y seleccione Personas que llaman.
Ashley
1
No es necesario utilizar el editor asistente. Puede abrir el mismo menú en el editor principal.
funroll
18

En Xcode-7 tiene la funcionalidad de obtener heirerquía de llamadas. Haga clic con el botón derecho en la función y haga clic en "Buscar jerarquía de llamadas": referencia de imagen:

user18853
fuente
4
se llama "Jerarquía de llamadas" y el atajo de teclado es: CTRL-SHIFT-COMMAND-H (mientras se selecciona algo).
Sr. Zystem
7

Xcode 10 hacia arriba parece haberlo hecho más fácil. Simplemente Comando Haga clic en la función y debería verla en el menú desplegable.

ingrese la descripción de la imagen aquí

king_T
fuente
4

Utilice Buscar en el proyecto como texto o como símbolo.

AFAIK, no hay equivalente a, por ejemplo, Call Hierarchy conocido de Eclipse o NetBeans.

Adam Woś
fuente
1
Hay "caller" y "callee" en xCode.
4

Presione el ⌘+Ctrl+Shift+Hatajo cuando se seleccione un método de interés (con un mouse o cursor). (según la respuesta de @uiroshan)

Pero también puede especificar cualquier otro atajo en XCode -> Preferences -> Key Bindings

Selecciona un método y usa ⌘ + Ctrl + Shift + H.  Pero también puede especificar otro atajo en XCode -> Preferencias -> Combinaciones de teclas

drpawelo
fuente
1
Yo personalmente uso ⌘ + H (primero tendrá que cambiar la desasignación de 'Ocultar XCode'. Simplemente escriba "Ocultar" en el cuadro Filtro, selecciónelo y elimínelo con Retroceso)
drpawelo
2

Curiosamente, la herramienta de refactorización puede detectar todas las llamadas a métodos, pero no la búsqueda.

Así que simplemente lo uso para cambiar el nombre de mi método a un nombre único (por ejemplo, restablecer a resetPlayer) y luego usar el nuevo nombre en una búsqueda textual regular.

1.) Menú> Editar> Refactorizar ...> Cambiar nombre a nombre único

2.) busca el nuevo nombre

Obiwahn
fuente
También puede revisar todos los lugares que se modificarían en la vista previa, sin terminar realmente la operación de refactorización.
funroll