Найти ссылки на методы в Xcode


174

Есть ли способ в Xcode, чтобы найти все места, где был вызван метод или свойство?

Например, в Eclipse вы можете щелкнуть правой кнопкой мыши метод и выбрать « Найти ссылки» . Есть ли что-нибудь подобное в Xcode?

Ответы:


252
  1. Выберите интересующий вас метод или поместите текстовый курсор внутри него.
  2. Откройте меню «Связанные файлы» с помощью значка в верхнем левом углу редактора. (Это кнопка слева от кнопки «Назад»).
  3. Перейдите в подменю «Callers» для получения списка всех методов, которые вызывают выбранный метод, и щелкните любой из них, чтобы перейти к этому файлу и методу.

В картинках ...

Скриншот шагов 1 и 2 выше.

Скриншот шага 3 выше

Пара заметок:

  • Вы можете сделать это для свойств тоже.
  • Обратите внимание, что когда вы выбираете вызывающий метод из меню Callers для перехода туда, где был вызван ваш метод, Xcode выделяет только первый вызов. Каждый вызывающий метод будет отображаться в списке «вызывающих» только один раз, даже если он содержит много вызовов вашего метода. Поэтому, если вы пытаетесь внести какие-то изменения в каждое место вашего приложения, где вызывается метод, будьте осторожны, чтобы не пропустить некоторые из них в тех местах, где вызывающий метод содержит два вызова интересующего вас метода.

34
Стандартный ярлык для вызова меню, ^1поэтому я обычно могу нажать, ^1, c, enterчтобы вызвать список.
Питер Тейл

Это находит все Callers метода и родительских реализаций. Есть ли способ найти абонентов только этой реализации?
Даниэль Каплан

1
@DanielKaplan Я бы не догадался, поскольку, по крайней мере, в некоторых случаях у компилятора не будет способа узнать, какая реализация должна быть вызвана.
Марк Амери

Мой метод вызван init, и это вызывает любой метод, названный initтакже. Не такой умный ...
Натан Х

36

Да, откройте редактор Assistant и вместо «коллег» выберите «Callers».

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


1
Вам не нужно использовать редактор split для этого, хотя это может быть удобно, если вы собираетесь редактировать множество вызывающих методов в быстрой последовательности. Смотри мой ответ.
Марк Амери

18

Начиная с версии XCode 4.5 вы можете нажать «Показать параметры поиска» в поле поиска навигатора поиска. Там вы можете указать «Ссылки на символы»

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


2
Это небольшое улучшение по сравнению с обычным поиском, но оно возвращает все ссылки, а не только конкретную, которую вы ищете. Например, если у вас есть класс со свойством height, поиск ссылок на символы в вашем свойстве height будет возвращать ссылки на все другие используемые вами свойства высоты, поэтому вам все равно придется просмотреть результаты, чтобы найти те, которые вы хотеть. Взлом, который работает довольно хорошо, можно посмотреть здесь: stackoverflow.com/a/5457479/850721
Майк Лоренц,


7

Поместите точку вставки в вызов или объявление метода и выберите «Найти»> «Найти выбранный символ в проекте». Для многокомпонентных селекторов это только выделит первую часть, но поиск, кажется, работает относительно надежно. Вы также можете использовать Find Call Hierarchy, которая вместо этого выделяет всю строку.

Соответствующий пункт контекстного меню (Найти выбранный символ в рабочей области) также работает, но немного сложнее заставить работать должным образом. Убедитесь, что текст не выделен, иначе он будет искать выбранное слово, а не весь селектор. Для этого вы можете щелкнуть левой кнопкой мыши, прежде чем щелкнуть правой кнопкой мыши (или удерживая нажатой клавишу «Control») в том же месте. Нет такой проблемы с контекстной иерархией поиска вызовов.


также очень полезно иметь сочетание клавиш для того же самого, отладка становится намного быстрее
Naishta

-11

С xcode 4 вы можете теперь щелкнуть правой кнопкой мыши по ссылкам и выбрать «перейти к определению».


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