Xcode查找调用者函数


117

在Xcode中,如何找到特定函数的所有调用者函数?


2
顺便说一句,我已经在回答中附加了一张图片。如今的XCode版本都支持此功能。如果您对任何答案感到满意,您是否愿意投票/接受答案?
David T.

如果您经常执行此操作(⌘+ Ctrl + Shift + H)
@uiroshan的

Answers:


125

Xcode 4.5(测试版)具有此功能。当您突出显示说...功能时,可以检查“呼叫者”和“被呼叫者”

编辑,我相信它位于该文件的文件面板的左上方...因此,双击该功能以将其突出显示,然后单击文件面板上的选项(具有“最近打开,未保存未打开”的选项)。 ...等”下拉菜单

编辑#2

这是要澄清的图片(因为我不知道此菜单按钮的名称)在此处输入图片说明

还-XCode 4.5不再是beta,我相信并且实际上已经公开发布了

编辑#3

还请注意,此调用方内容不会搜索在performSelector方法下被调用的情况,例如,performSelector如果您执行了以下操作,则不会显示具有此调用方的特定调用方:

[self performSelector:@selector(checkIfShouldStopMovement) withObject:nil afterDelay:0.25];

5
它实际上是View-> Standard Editor-> Show Related Items,请参阅我的答案(stackoverflow.com/a/13472334/888091)。
pille 2012年

2
@pille啊。我知道,我不知道您可以通过这种方式访问​​它。我已对您的答案进行了投票,并修改了答案以显示UI方式。感谢您的快捷方式!
David T.

55

在XCode 4.5中,最快的方法是:

  1. 在代码中选择方法(双击或使用鼠标光标标记)
  2. Ctrl +1
  3. 从弹出菜单中选择“呼叫者”。

这是进入XCode标题菜单中的“查看”->“标准编辑器”->“显示相关项目”的快捷方式。


1
“呼叫者”菜单也是上下文相关的,因此您不必首先选择方法。在调用<kbd> Ctrl </ kbd> + <kbd> 1 </ kbd>快捷方式之前,只需将其放置在要查看调用方的方法中的任何位置即可。
杰伊,

亲爱的,不知道!
pille

2
我不敢相信没有更快的方法……使用IntelliJ后,我对Xcode感到非常失望
stevo.mit 2015年


23

也可以通过助手编辑器进行访问,如下面的屏幕快照所示。在左侧主编辑器中插入点的任何一种方法,其调用者都将显示在助手编辑器中。我发现这是连续浏览每个呼叫者的最佳方法,因为一旦选择了“呼叫者”,便可以通过跳转栏中右侧的下一个弹出菜单选择下一个呼叫者。

在此处输入图片说明


很棒-但是我花了一些时间才弄清楚如何开始。对于跟随我的其他用户:请注意,在Brian的屏幕快照中,打开的下拉列表不是其他一些答案中提到的“显示相关项”(ctrl + 1)菜单。而是在助手编辑器中,单击“前进”按钮右侧的下拉菜单,然后选择“呼叫者”。
Ashley 2013年

1
您不需要使用助手编辑器。您可以在主编辑器中打开相同的菜单。
funroll

18

在Xcode-7中,您具有获取电话传票的功能。右键单击该函数,然后单击“查找呼叫层次结构”: 图像参考:


4
它称为“呼叫层次结构”,键盘快捷键为:CTRL-SHIFT-COMMAND-H(选择某些内容时)。
Zystem先生16年

7

Xcode 10向上似乎使它变得更容易。只需命令单击功能,您将在下拉菜单中看到它。

在此处输入图片说明


4

使用“在项目中查找”作为文本或符号。

AFAIK,与Eclipse或NetBeans中已知的“呼叫层次结构”等效。


1
xCode中有“呼叫者”和“被呼叫者”。

4

⌘+Ctrl+Shift+H当选择(用鼠标或光标)的利益的方法快捷方式。(根据@uiroshan的回答)

但您也可以在中指定其他任何快捷方式 XCode -> Preferences -> Key Bindings

选择一种方法,然后使用⌘+ Ctrl + Shift + H。 但是您也可以在XCode-> Preferences-> Key Bindings中指定另一个快捷方式


1
我个人使用⌘+ H(您必须先从“隐藏XCode”切换为取消分配。只需在“过滤器”框中键入“隐藏”,选择它并用Backspace删除)
drpawelo

2

奇怪的是,重构工具可以检测到所有方法调用,但不能检测到搜索。

因此,我只是使用它来将我的方法重命名为唯一的名称(例如,重置为resetPlayer),然后在常规文本搜索中使用新名称。

1.)菜单>编辑>重构...>重命名为唯一名称

2.)搜索新名称


您也可以仅查看预览中将要修改的所有位置,而无需实际完成重构操作。
funroll 2013年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.