Xcode에서 메소드 참조 찾기


174

Xcode에서 메소드 또는 속성이 호출 된 모든 위치를 찾는 방법이 있습니까?

예를 들어, Eclipse에서 메소드를 마우스 오른쪽 단추로 클릭하고 참조 찾기를 선택할 수 있습니다 . Xcode에 비슷한 것이 있습니까?

답변:


252
  1. 관심있는 방법을 선택하거나 그 안에 텍스트 커서를 놓습니다.
  2. 편집기의 왼쪽 상단에있는 아이콘을 통해 "관련 파일"메뉴를 엽니 다. (뒤로 버튼의 바로 왼쪽에있는 버튼입니다).
  3. 선택한 메소드를 호출하는 모든 메소드 목록을 보려면 "Callers"하위 메뉴로 이동 한 후 이들 중 하나를 클릭하여 해당 파일 및 메소드로 이동하십시오.

사진에서 ...

위의 1 단계와 2 단계의 스크린 샷

위의 3 단계 스크린 샷

몇 가지 메모 :

  • 속성에 대해서도이 작업을 수행 할 수 있습니다.
  • 호출자 메뉴에서 호출 방법을 선택하여 메소드가 호출 된 위치로 이동하면 Xcode는 첫 번째 호출 만 강조 표시합니다 . 각 호출 방법은 메소드에 대한 많은 호출을 포함하더라도 '발신자'목록에 한 번만 표시됩니다. 따라서 메소드가 호출되는 애플리케이션의 모든 위치에서 약간의 변경을 시도하는 경우 호출 메소드에 관심이있는 메소드에 대한 두 개의 호출이 포함 된 위치를 놓치지 않도록주의하십시오.

34
메뉴를 불러 오기위한 기본 단축키는 ^1보통 눌러서 ^1, c, enter목록을 불러올 수 있습니다.
피터 테일

메소드의 모든 호출자와 상위 구현을 찾습니다. 의 발신자 찾을 수있는 방법이 있습니까 이 구현은?
Daniel Kaplan

1
@DanielKaplan 적어도 어떤 경우에는 컴파일러가 어떤 구현을 호출할지 알 수있는 방법이 없기 때문에 추측하지 않을 것입니다.
Mark Amery

내 방법은이라고 불리며 init이름이 지정된 모든 방법을 불러옵니다 init. 그렇게 똑똑하지 않은 ...
Nathan H

36

예, 길잡이 편집기를 열고 상대방 대신 발신자를 선택하십시오.

여기에 이미지 설명을 입력하십시오


1
당신은하지 않습니다 당신이 연속으로 호출하는 방법을 많이 편집 할 거라면이 편리 할 수 있지만, 이것에 대한 분할 편집기를 사용 할 수 있습니다. 내 대답을 참조하십시오.
Mark Amery

18

XCode 4.5부터는 검색 네비게이터의 검색 필드에서 "찾기 옵션 표시"를 클릭 할 수 있습니다. "기호 참조"를 지정할 수 있습니다

여기에 이미지 설명을 입력하십시오


2
이것은 완전 검색보다 약간 개선되었지만 원하는 특정 참조 뿐만 아니라 모든 참조를 반환 합니다 . 예를 들어, "height"속성이있는 클래스가있는 경우, height 속성에서 심볼 참조를 검색하면 사용한 모든 다른 높이 속성에 대한 참조가 반환되므로 결과를 살펴보면서 여전히 원하는 속성을 찾아야합니다. 필요. 상당히 훌륭하게 작동하는 해킹에 대해서는 다음을 참조하십시오 : stackoverflow.com/a/5457479/850721
Mike Lorenz


7

메소드 호출 또는 선언에 삽입 점을 놓고 찾기> 프로젝트에서 선택된 심볼 찾기를 선택하십시오. 멀티 파트 선택기의 경우 첫 번째 파트 만 강조 표시하지만 검색이 비교적 안정적으로 작동하는 것 같습니다. 대신 전체 회선을 강조 표시하는 통화 계층 찾기를 사용할 수도 있습니다.

해당 상황에 맞는 메뉴 항목 (작업 영역에서 선택한 심볼 찾기)도 작동하지만 제대로 작동하려면 조금 까다 롭습니다. 텍스트를 선택하지 않으면 전체 선택기 대신 선택한 단어를 검색합니다. 그렇게하려면 동일한 위치에서 마우스 오른쪽 버튼으로 클릭 (또는 Control- 클릭)하기 전에 마우스 왼쪽 버튼으로 클릭하면됩니다. 상황 별 찾기 호출 계층 구조에는 이러한 문제가 없습니다.


그것의 키보드 단축키를 갖는 것도 매우 유용합니다. 디버깅이 훨씬 빨라집니다
Naishta

-11

xcode 4를 사용하면 참조를 마우스 오른쪽 버튼으로 클릭하고 "정의로 점프"를 선택할 수 있습니다.


12
그것은 반대의 질문에 답합니다.
Richard
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.