Suchen Sie nach Methodenreferenzen in Xcode

174

Gibt es in Xcode eine Möglichkeit, alle Stellen zu finden, an denen eine Methode oder Eigenschaft aufgerufen wurde?

In Eclipse können Sie beispielsweise mit der rechten Maustaste auf eine Methode klicken und Referenzen suchen auswählen . Gibt es etwas Ähnliches in Xcode?

Java Ka Baby
quelle

Antworten:

252
  1. Wählen Sie die Methode aus, an der Sie interessiert sind, oder positionieren Sie den Textcursor darin.
  2. Öffnen Sie das Menü "Verwandte Dateien" über das Symbol oben links im Editor. (Es ist die Schaltfläche unmittelbar links von der Zurück-Schaltfläche).
  3. Im Untermenü "Aufrufer" finden Sie eine Liste aller Methoden, die die ausgewählte Methode aufrufen, und klicken Sie auf eine dieser Methoden, um zu dieser Datei und Methode zu springen.

In Bildern...

Screenshot der obigen Schritte 1 und 2.

Screenshot von Schritt 3 oben

Ein paar Anmerkungen:

  • Sie können dies auch für Eigenschaften tun.
  • Beachten Sie, dass Xcode nur den ersten Aufruf hervorhebt, wenn Sie eine aufrufende Methode aus dem Menü Anrufer auswählen, um zu dem Ort zu springen, an dem Ihre Methode aufgerufen wurde . Jede aufrufende Methode wird nur einmal in der Liste "Anrufer" angezeigt, selbst wenn sie viele Aufrufe Ihrer Methode enthält. Wenn Sie also versuchen, an jeder Stelle in Ihrer Anwendung, an der eine Methode aufgerufen wird, Änderungen vorzunehmen, sollten Sie einige Stellen nicht verpassen, an denen eine aufrufende Methode zwei Aufrufe der Methode enthält, an der Sie interessiert sind.
Mark Amery
quelle
34
Die Standardverknüpfung zum Aufrufen des Menüs, ^1sodass ich normalerweise drücken kann ^1, c, enter, um die Liste aufzurufen.
Peter Theill
Dadurch werden alle Aufrufer der Methode und der übergeordneten Implementierungen gefunden. Gibt es eine Möglichkeit, Anrufer nur für diese Implementierung zu finden?
Daniel Kaplan
1
@ DanielKaplan Ich würde nicht raten, da der Compiler zumindest in einigen Fällen nicht wissen kann, welche Implementierung aufgerufen werden soll.
Mark Amery
Meine Methode wird aufgerufen init, und dies ruft auch jede benannte Methode auf init. Nicht so schlau ...
Nathan H
36

Ja, öffnen Sie den Assistenten-Editor und wählen Sie anstelle von Gegenstücken Anrufer aus.

Geben Sie hier die Bildbeschreibung ein

Alex Terente
quelle
1
Sie müssen nicht haben , um den Split - Editor für diese, obwohl es praktisch sein kann , wenn Sie gehen viele die Aufrufe von Methoden in schnellen Folge zu bearbeiten. Siehe meine Antwort.
Mark Amery
18

Ab XCode 4.5 können Sie im Suchfeld des Suchnavigators auf "Suchoptionen anzeigen" klicken. Dort können Sie "Symbolreferenzen" angeben

Geben Sie hier die Bildbeschreibung ein

SystematicFrank
quelle
2
Dies ist eine leichte Verbesserung gegenüber einer bloßen Suche, gibt jedoch alle Referenzen zurück, nicht nur die, nach der Sie suchen. Wenn Sie beispielsweise eine Klasse mit einer "height" -Eigenschaft haben, werden bei der Suche nach Symbolreferenzen in Ihrer height-Eigenschaft Verweise auf alle Arten anderer von Ihnen verwendeter height-Eigenschaften zurückgegeben, sodass Sie die Ergebnisse noch durchsuchen müssen, um die gewünschten zu finden wollen. Für einen Hack, der ziemlich gut funktioniert, sehen Sie dies: stackoverflow.com/a/5457479/850721
Mike Lorenz
11

Funktion auswählen, cmd-shift-A drücken, "Anrufer"

Geben Sie hier die Bildbeschreibung ein

Uladzimir
quelle
7

Platzieren Sie die Einfügemarke in einem Methodenaufruf oder einer Deklaration und wählen Sie Suchen> Ausgewähltes Symbol im Projekt suchen. Bei mehrteiligen Selektoren wird nur der erste Teil hervorgehoben, aber die Suche scheint relativ zuverlässig zu funktionieren. Sie können auch die Anrufhierarchie suchen verwenden, die stattdessen die gesamte Zeile hervorhebt.

Der entsprechende Kontextmenüpunkt (Ausgewähltes Symbol im Arbeitsbereich suchen) funktioniert ebenfalls, aber es ist etwas schwieriger, die Arbeit richtig zu machen. Stellen Sie sicher, dass kein Text ausgewählt wird, da sonst nach dem ausgewählten Wort und nicht nach der gesamten Auswahl gesucht wird. Dazu können Sie mit der linken Maustaste klicken, bevor Sie mit der rechten Maustaste (oder bei gedrückter Ctrl-Taste) an derselben Stelle klicken. Es gibt kein solches Problem mit der kontextbezogenen Suchanrufhierarchie.

Nicholas Riley
quelle
Es ist auch sehr nützlich, eine Tastenkombination für dasselbe zu haben. Das Debuggen wird so viel schneller
Naishta
-11

Mit xcode 4 können Sie jetzt mit der rechten Maustaste auf Referenzen klicken und "Zur Definition springen" auswählen.

Scott Looze
quelle
12
Das beantwortet die entgegengesetzte Frage.
Richard