Xcode находит функции вызывающего абонента


117

Как в Xcode найти все вызывающие функции определенной функции?


2
Кстати, к своему ответу я прикрепил изображение. и версии XCode в настоящее время поддерживают это. готовы ли вы проголосовать / принять ответ, если вас устраивает какой-либо из ответов ??
Дэвид Т.

Ответ @uiroshan ниже наиболее удобен, если вы делаете это часто (⌘ + Ctrl + Shift + H)
drpawelo

Ответы:


125

Xcode 4.5 (в бета-версии) имеет эту функциональность. когда вы выделяете say ... функцию, вы можете проверить "вызывающий" и "вызываемый"

редактировать, я считаю, что он расположен в верхнем левом углу файловой панели для этого файла ... поэтому дважды щелкните функцию, чтобы выделить ее, и нажмите на параметры панели файлов (тот, который имеет "открытые недавние, открытые несохраненные ... и т.д. "

РЕДАКТИРОВАТЬ # 2

вот изображение для пояснения (так как я не знаю, как называется эта кнопка меню) введите описание изображения здесь:

ТАКЖЕ - XCode 4.5 больше не является бета-версией, я полагаю, и на самом деле публично

РЕДАКТИРОВАТЬ # 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

2
@pille А. Понятно, я не знал, что вы можете получить к нему доступ таким образом. Я поддержал ваш ответ и отредактировал свой ответ, чтобы показать, как работает пользовательский интерфейс. Спасибо за ярлык !!
Дэвид Т.

55

В XCode 4.5 самый быстрый способ таков:

  1. Выберите метод в коде (дважды щелкните или отметьте курсором мыши)
  2. Нажмите Ctrl+1
  3. Выберите «Абоненты» во всплывающем меню.

Это ярлык для перехода в меню View-> Standard Editor-> Show Related Items в меню заголовка XCode.


1
Меню вызывающих абонентов также зависит от контекста, поэтому вам не нужно сначала выбирать метод. Просто поместите его в любом месте метода, для которого вы хотите видеть вызывающих лиц, прежде чем вызывать ярлык <kbd> Ctrl </kbd> + <kbd> 1 </kbd>.
Джей

Милая, не знала этого!
pille

2
Не могу поверить, что нет более быстрого способа ... Я весьма разочарован Xcode после использования IntelliJ
stevo.mit

35

используйте комбинацию клавиш ⌘ + Ctrl + Shift + H в XCode 7 и далее.


2
Красивое решение. Спасибо!
Myxtic 01

Курсор должен находиться на имени функции.
Али Момен Сани

Если вы отредактировали свои ярлыки:
выполните

4
Я сломаю пальцы, чтобы нажать эту комбинацию!
Accid Bright

Спасибо, ищу такое решение.
Hitesh Agarwal

23

Это также можно получить через помощник редактора, как показано на скриншоте ниже. В каком бы методе вы не установили точку вставки в главном редакторе слева, вызывающие его объекты будут отображаться в помощнике редактора. Я обнаружил, что это лучший способ просмотра каждого вызывающего абонента по очереди, поскольку после того, как вы выбрали «вызывающие абоненты», вы можете выбрать следующего вызывающего абонента через следующее всплывающее меню справа на панели перехода.

введите описание изображения здесь


Это здорово, но мне потребовалось время, чтобы понять, с чего начать. Для других, следующих за мной: обратите внимание, что на снимке экрана Брайана раскрывающееся раскрывающееся меню не является меню «Показать связанные элементы» (ctrl + 1), упомянутым в некоторых других ответах. Вместо этого в помощнике редактора щелкните раскрывающийся список справа от кнопки «Вперед» и выберите «Вызывающие».
Эшли

1
Вам не нужно использовать помощник редактора. Вы можете открыть то же меню в основном редакторе.
funroll

18

В Xcode-7 у вас есть функция получения иерархии вызовов. Щелкните функцию правой кнопкой мыши и выберите «Найти иерархию вызовов»: ссылка на изображение:


4
это называется «Иерархия вызовов», а сочетание клавиш выглядит следующим образом: CTRL-SHIFT-COMMAND-H (пока что-то выделено).
Mr. Zystem

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 (сначала вам нужно переключить un-assign it с 'Hide XCode'. Просто введите «Hide» в поле Filter, выберите его и удалите с помощью Backspace)
drpawelo

2

Как ни странно, инструмент рефакторинга может обнаруживать все вызовы методов, но не поиск.

Поэтому я просто использую его, чтобы переименовать свой метод в уникальное имя (например, сбросить на resetPlayer), а затем использовать новое имя в обычном текстовом поиске.

1.) Меню> Правка> Рефакторинг ...> Переименовать в уникальное имя

2.) поиск нового имени


Вы также можете просто просмотреть все места, которые будут изменены в предварительном просмотре, фактически не завершая операцию рефакторинга.
funroll 04

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.