【问题标题】:Xcode find caller functionsXcode 查找调用者函数
【发布时间】:2020-12-24 19:40:31
【问题描述】:

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

【问题讨论】:

  • 顺便说一句,我在我的答案中附上了一张图片。现在的 XCode 版本支持这一点。如果您对任何答案感到满意,您愿意投票/接受答案吗??
  • @uiroshan 下面的回答是最方便的,如果你经常这样做(⌘+Ctrl+Shift+H)

标签: xcode


【解决方案1】:

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

edit 我相信它位于该文件的文件面板的左上角...所以双击该功能以突出显示它,然后单击文件面板选项(一个具有“最近打开,打开未保存...等”下拉菜单

编辑#2

这里有一张图澄清一下(因为我不知道这个菜单按钮叫什么):

另外 - 我相信 XCode 4.5 不再是测试版,实际上已经公开了

编辑#3

还请注意,此调用者事物不会搜索在 performSelector 方法下被调用,例如,如果您执行以下操作,则具有此 performSelector 的特定调用者将不会出现:

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

【讨论】:

  • 其实是View->Standard Editor->Show Related Items,看我的回答(stackoverflow.com/a/13472334/888091)。
  • @pille 啊。我明白了,我不知道您可以通过这种方式访问​​它。我赞成你的答案,我已经编辑了我的答案以显示 UI 方式。感谢您的快捷方式!
【解决方案2】:

在 Xcode 中,最快的方法是这样的:

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

这是在 Xcode 的菜单中查看 -> 编辑器 -> 显示相关项目的快捷方式。

【讨论】:

  • 调用者菜单也是上下文相关的,因此您不必先选择方法。在调用 Ctrl+1 快捷方式之前,只需将其放置在您希望查看调用者的方法中的任何位置。
  • 我不敢相信没有更快的方法......我对使用 IntelliJ 后的 Xcode 感到非常失望
【解决方案3】:

在 Xcode 7 及更高版本上使用 ⌘+Ctrl+Shift+H 组合键。

【讨论】:

  • 漂亮的解决方案。谢谢!
  • 光标必须在函数名上。
  • 如果您编辑了快捷方式:搜索“查找呼叫层次结构”
  • 按这个组合我会打断手指的!
  • 谢谢,我正在寻找这种解决方案。
【解决方案4】:

这也可以通过助手编辑器访问,如下面的屏幕截图所示。无论您在左侧的主编辑器中使用哪种方法,其调用者都会显示在辅助编辑器中。我发现这是连续查看每个呼叫者的最佳方式,因为一旦您选择了“呼叫者”,您就可以通过跳转栏中右侧的下一个弹出菜单选择下一个呼叫者。

【讨论】:

  • 这很棒——但我花了一段时间才弄清楚如何开始。对于关注我的其他人:请注意,在 Brian 的屏幕截图中,打开的下拉菜单 不是 其他答案中提到的“显示相关项目”(ctrl+1)菜单。相反,在助手编辑器中,单击“前进”按钮右侧的下拉菜单,然后选择呼叫者。
  • 您不需要使用助理编辑器。您可以在主编辑器中打开相同的菜单。
【解决方案5】:

在 Xcode-7 中,您具有获取调用层次结构的功能。右键单击该函数,然后单击“查找调用层次结构”: image reference:

【讨论】:

  • 它被称为“调用层次结构”,键盘快捷键是:CTRL-SHIFT-COMMAND-H(当某些东西被选中时)。
【解决方案6】:

Xcode 10 以上版本似乎更容易了。只需 Command Click 在该功能上,您应该会在下拉菜单中看到它。

【讨论】:

    【解决方案7】:

    在选择感兴趣的方法时(使用鼠标或光标)按⌘+Ctrl+Shift+H 快捷方式。 (根据@uiroshan 的回答)

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

    【讨论】:

    • 我个人使用 ⌘+H (您必须先从“隐藏 XCode”切换取消分配它。只需在“过滤器”框中输入“隐藏”,选择它并使用 Backspace 删除)跨度>
    【解决方案8】:

    将项目中的查找用作文本或符号。

    AFAIK,没有等同于例如来自 Eclipse 或 NetBeans 的调用层次结构。

    【讨论】:

    • xCode中有“caller”和“callee”。
    【解决方案9】:

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

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

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

    2.) 搜索新名称

    【讨论】:

    • 您也可以只在预览中查看所有将要修改的地方,而无需真正完成重构操作。
    【解决方案10】:

    该功能在 XCode 4.4.1 中可用,请参阅:http://smilingfinney.blogspot.de/2012/09/method-callers-in-xcode-44.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      相关资源
      最近更新 更多