Знайдіть посилання методу в Xcode


174

Чи є спосіб у Xcode знайти всі місця, де викликали метод чи властивість?

Наприклад, у програмі Eclipse можна клацнути правою кнопкою миші метод та вибрати Знайти посилання . Чи є щось подібне в Xcode?

Відповіді:


252
  1. Виберіть метод, який вас цікавить, або розташуйте текстовий курсор у ньому.
  2. Відкрийте меню "Суміжні файли" за допомогою піктограми у верхньому лівому куті Редактора. (Це кнопка зліва від кнопки "назад").
  3. Перейдіть у підменю "Абоненти", щоб переглянути список усіх методів, які викликають обраний метод, та клацніть будь-який із них, щоб перейти до цього файлу та методу.

На фотографіях ...

Знімок екрана кроків 1 і 2 вище.

Знімок екрана 3 кроку вище

Пара приміток:

  • Це можна зробити і для властивостей.
  • Зауважте, що коли ви вибираєте метод виклику з меню «Поклики», щоб перейти до місця, де називався ваш метод, Xcode виділяє лише перший дзвінок. Кожен метод виклику відображатиметься у списку "Абонентів" лише один раз, навіть якщо він містить багато викликів до вашого методу. Тож якщо ви намагаєтесь внести якісь зміни у кожному місці вашої програми, де називається метод, будьте обережні, щоб не пропустити деякі місця, де метод виклику містить два виклики методу, який вас цікавить.

34
Ярлик по замовчуванню для відображення меню, ^1тому я зазвичай можу натиснути, ^1, c, enterщоб відобразити список.
Пітер Теїл

Тут знаходять усі Викликаючі методи та батьківські реалізації. Чи є спосіб знайти абонентів лише цієї реалізації?
Даніель Каплан

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

Мій метод називається init, і це також пропонує будь-який метод, названий initтакож. Не такий розумний ...
Натан Н

36

Так, відкрийте редактор «Помічник» і замість «Контрагентів» виберіть «Виклики».

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


1
Для цього вам не потрібно використовувати редактор розділення, хоча це може бути зручно, якщо ви збираєтеся швидко редагувати безліч методів виклику. Дивіться мою відповідь.
Марк Амері

18

Станом на XCode 4.5 ви можете натиснути «Показати параметри пошуку» в полі пошуку пошукового навігатора. Там ви можете вказати "Посилання на символи"

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


2
Це незначне поліпшення в порівнянні з голим пошуком, але воно повертає всі посилання, а не лише ту, яку ви шукаєте. Наприклад, якщо у вас є клас із властивістю "висота", пошук посилань на символи на вашій властивості висоти повертає посилання на всі типи інших використовуваних вами властивостей висоти, тому вам все одно доведеться проглянути результати, щоб знайти ті, які ви хочу. Про хакер, який працює досить чудово, дивіться це: stackoverflow.com/a/5457479/850721
Майк Лоренц


7

Помістіть точку вставки у виклик або декларацію методу та оберіть Знайти> Знайти вибраний символ у проекті. Для селекторних селекторів це виділить лише першу частину, але пошук, здається, працює відносно надійно. Ви також можете використовувати Find Hierarchy Find, яка виділяє всю лінію.

Відповідний пункт контекстного меню (Знайти вибраний символ у робочій області) також працює, але трохи правильніше зробити роботу належним чином. Переконайтесь, що не вибрано жодного тексту, інакше він шукатиме вибране слово, а не весь селектор. Для цього ви можете натиснути лівою кнопкою миші перед натисканням правою кнопкою миші (або клацанням Control) у тому самому місці. У контекстній ієрархії пошуку викликів такої проблеми немає.


також дуже корисно мати комбінацію клавіш для того ж, налагодження стає набагато швидше
Naishta

-11

За допомогою xcode 4 ви можете клацнути правою кнопкою миші посилання та вибрати "перейти до визначення".


12
Це відповідає протилежному питанню.
Річард
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.