Encuentra referencias de métodos en Xcode

174

¿Hay alguna manera en Xcode para encontrar todos los lugares donde se ha llamado a un método o propiedad?

En Eclipse, por ejemplo, puede hacer clic con el botón derecho en un método y seleccionar Buscar referencias . ¿Hay algo similar en Xcode?

Java Ka Baby
fuente

Respuestas:

252
  1. Seleccione el método que le interesa o coloque el cursor de texto dentro de él.
  2. Abra el menú "Archivos relacionados" a través del icono en la esquina superior izquierda del Editor. (Es el botón inmediatamente a la izquierda del botón Atrás).
  3. Vaya al submenú "Llamadores" para obtener una lista de todos los métodos que llaman al método seleccionado, y haga clic en cualquiera de ellos para saltar a ese archivo y método.

En fotos...

Captura de pantalla de los pasos 1 y 2 anteriores.

Captura de pantalla del paso 3 anterior

Un par de notas:

  • También puedes hacer esto para las propiedades.
  • Tenga en cuenta que cuando selecciona un método de llamada en el menú Llamantes para ir a donde se llamó su método, Xcode resalta solo la primera llamada. Cada método de llamada solo aparecerá una vez en la lista de "Llamadas", incluso si contiene muchas llamadas a su método. Entonces, si está tratando de hacer algún cambio en cada lugar de su aplicación donde se llama a un método, tenga cuidado de no perder algunos en lugares donde un método de llamada contiene dos llamadas al método que le interesa.
Mark Amery
fuente
34
El acceso directo predeterminado para abrir el menú, por ^1lo que generalmente puedo presionar ^1, c, enterpara que aparezca la lista.
Peter Theill
Esto busca todos los llamadores del método y las implementaciones principales. ¿Hay alguna manera de encontrar personas que llaman solo de esta implementación?
Daniel Kaplan
1
@DanielKaplan Supongo que no, ya que al menos en algunos casos el compilador no tendrá forma de saber qué implementación se llamará.
Mark Amery
Se llama a mi método init, y esto muestra cualquier método nombrado inittambién. No es tan inteligente ...
Nathan H
36

Sí, abra el editor Asistente y en lugar de Contrapartes, seleccione Llamantes.

ingrese la descripción de la imagen aquí

Alex Terente
fuente
1
No tiene que usar el editor dividido para esto, aunque puede ser conveniente si va a editar muchos de los métodos de llamada en rápida sucesión. Mira mi respuesta.
Mark Amery
18

A partir de XCode 4.5, puede hacer clic en "Mostrar opciones de búsqueda" en el campo de búsqueda del Navegador de búsqueda. Allí puede especificar "Referencias de símbolos"

ingrese la descripción de la imagen aquí

Frank sistemático
fuente
2
Esta es una ligera mejora con respecto a una búsqueda simple , pero devuelve todas las referencias, no solo la particular que está buscando. Por ejemplo, si tiene una clase con una propiedad de "altura", la búsqueda de referencias de símbolos en su propiedad de altura devolverá referencias a todo tipo de otras propiedades de altura que utilizó, por lo que aún tiene que examinar los resultados para encontrar los que querer. Para un truco que funciona bastante bien, mira esto: stackoverflow.com/a/5457479/850721
Mike Lorenz
11

Seleccione la función, presione cmd-shift-A, "Llamadores"

ingrese la descripción de la imagen aquí

Uladzimir
fuente
7

Coloque el punto de inserción en una invocación o declaración de método y elija Buscar> Buscar símbolo seleccionado en el proyecto. Para los selectores multiparte, esto solo resaltará la primera parte, pero la búsqueda parece funcionar de manera relativamente confiable. También puede usar Buscar jerarquía de llamadas que resalta la línea completa en su lugar.

El elemento correspondiente del menú contextual (Buscar símbolo seleccionado en el espacio de trabajo) también funciona, pero es un poco más complicado hacer que funcione correctamente. Asegúrese de que no se seleccione ningún texto; de lo contrario, buscará la palabra seleccionada en lugar del selector completo. Para hacerlo, puede hacer clic con el botón izquierdo del mouse antes de hacer clic con el botón derecho del mouse (o presionar Control) en la misma ubicación. No existe tal problema con la jerarquía contextual de búsqueda de llamadas.

Nicholas Riley
fuente
también es muy útil tener un atajo de teclado para el mismo, la depuración se vuelve mucho más rápida
Naishta
-11

Con xcode 4 ahora puede hacer clic derecho en las referencias y seleccionar "saltar a definición".

Scott Looze
fuente
12
Eso responde a la pregunta opuesta.
Richard