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

117

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

Genesys
источник
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 и далее.

uiroshan
источник
2
Красивое решение. Спасибо!
Myxtic 01
Курсор должен находиться на имени функции.
Али Момен Сани
Если вы отредактировали свои ярлыки:
выполните
4
Я сломаю пальцы, чтобы нажать эту комбинацию!
Accid Bright
Спасибо, ищу такое решение.
Hitesh Agarwal
23

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

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

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

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

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

Xcode 10 и выше, похоже, упростил эту задачу. Просто команда Щелкните функцию, и вы должны увидеть ее в раскрывающемся списке.

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

king_T
источник
4

Используйте «Найти в проекте» как текст или как символ.

AFAIK, нет эквивалента, например, иерархии вызовов, известной из Eclipse или NetBeans.

Адам Вось
источник
1
В xCode есть «вызывающий» и «вызываемый».
4

Нажмите ⌘+Ctrl+Shift+Hсочетание клавиш, когда выбран интересующий метод (с помощью мыши или курсора). (согласно ответу @uiroshan)

Но вы также можете указать любой другой ярлык в XCode -> Preferences -> Key Bindings

Выберите метод и используйте ⌘ + Ctrl + Shift + H.  Но вы также можете указать другой ярлык в XCode -> Preferences -> Key Bindings

drpawelo
источник
1
Лично я использую ⌘ + H (сначала вам нужно переключить un-assign it с 'Hide XCode'. Просто введите «Hide» в поле Filter, выберите его и удалите с помощью Backspace)
drpawelo
2

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

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

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

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

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