Xcode 호출자 함수 찾기


117

Xcode에서 특정 함수의 모든 호출자 함수를 어떻게 찾을 수 있습니까?


2
그건 그렇고, 나는 내 대답에 이미지를 첨부했습니다. 그리고 XCode 버전은 요즘 이것을 지원합니다. 답변에 만족한다면 답변을 기꺼이 찬성 / 수락 하시겠습니까 ??
David T.

이 많이 할 경우 아래 @uiroshan의 대답이 가장 편리한 (⌘ + Ctrl 키 + 시프트 + H)
drpawelo

답변:


125

Xcode 4.5 (베타)에는이 기능이 있습니다. say ... 기능을 강조 표시하면 "caller"와 "callee"를 확인할 수 있습니다.

편집 파일 패널의 왼쪽 상단에 있다고 생각합니다. 기능을 두 번 클릭하여 강조 표시하고 파일 패널 옵션 ( "최근 열기, 저장되지 않은 열기 ... etc "드롭 다운

# 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 2012

2
@pille 아. 그런 식으로 액세스 할 수 있는지 몰랐습니다. 나는 귀하의 답변을 찬성했으며 UI 방식을 보여주기 위해 내 답변을 편집했습니다. 바로 가기 감사합니다 !!
David T.

55

XCode 4.5에서 가장 빠른 방법은 다음과 같습니다.

  1. 코드에서 방법 선택 (두 번 클릭하거나 마우스 커서를 사용하여 표시)
  2. Ctrl+를 누릅니다.1
  3. 팝업 메뉴에서 "발신자"를 선택합니다.

이것은 XCode의 타이틀 메뉴에서 View-> Standard Editor-> Show Related Items로가는 단축키입니다.


1
호출자 메뉴도 상황에 따라 달라 지므로 먼저 방법을 선택할 필요가 없습니다. <kbd> Ctrl </ kbd> + <kbd> 1 </ kbd> 단축키를 호출하기 전에 호출자를보고자하는 메소드 내 아무 곳에 나 배치하십시오.
Jay

달콤한, 몰랐습니다!
pille 2013

2
난 안 빠른 방법 ... 내가 아주 인 IntelliJ를 사용 후 엑스 코드에 실망하고있다가 믿을 수 없어
stevo.mit

35

XCode 7부터는 ⌘ + Ctrl + Shift + H 키 조합을 사용하십시오.


2
아름다운 솔루션. 감사합니다!
Myxtic

커서는 함수 이름에 있어야합니다.
Ali Momen Sani

바로 가기를 편집 한 경우 : "Find call hierarchy"를 검색하십시오.
brainray

4
이 조합을 눌러 손가락을 부러 뜨릴 게요!
Accid Bright

감사합니다. 이런 종류의 솔루션을 찾고 있습니다.
Hitesh Agarwal

23

아래 스크린 샷과 같이 보조 편집기를 통해 액세스 할 수도 있습니다. 왼쪽의 기본 편집기에 삽입 포인터가있는 메서드는 어시스턴트 편집기에 호출자가 표시됩니다. "발신자"를 선택하면 점프 바 오른쪽에있는 다음 팝업 메뉴를 통해 다음 발신자를 선택할 수 있기 때문에이 방법이 각 발신자를 연속적으로 살펴 보는 가장 좋은 방법이라는 것을 알게되었습니다.

여기에 이미지 설명 입력


이것은 훌륭하지만 시작하는 방법을 알아내는 데 시간이 걸렸습니다. 나를 팔로우하는 다른 사람들의 경우 : Brian의 스크린 샷에서 열린 드롭 다운이 다른 답변에 언급 된 "관련 항목 표시"(ctrl + 1) 메뉴 가 아닙니다 . 대신 보조 편집기에서 "전달"버튼 오른쪽의 드롭 다운을 클릭하고 발신자를 선택합니다.
애슐리

1
보조 편집기를 사용할 필요가 없습니다. 기본 편집기에서 동일한 메뉴를 열 수 있습니다.
funroll

18

Xcode-7에는 전화 상속을받는 기능이 있습니다. 함수를 마우스 오른쪽 버튼으로 클릭하고 "Find Call Hierarchy"를 클릭합니다. 이미지 참조 :


4
이를 "통화 계층 구조"라고하며 키보드 단축키는 CTRL-SHIFT-COMMAND-H (뭔가가 선택된 동안)입니다.
Mr. Zystem

7

Xcode 10 이상은 더 쉽게 만든 것 같습니다. 그냥 명령 기능을 클릭 하면 드롭 다운에서 볼 수 있습니다.

여기에 이미지 설명 입력


4

프로젝트에서 찾기를 텍스트 또는 기호로 사용합니다.

AFAIK, Eclipse 또는 NetBeans에서 알려진 Call Hierarchy와 동등한 것은 없습니다.


1
xCode에는 "caller"와 "callee"가 있습니다.

4

⌘+Ctrl+Shift+H관심있는 방법이 선택되면 바로 가기를 누릅니다 (마우스 또는 커서 사용). (@uiroshan의 답변에 따라)

하지만 다른 단축키를 지정할 수도 있습니다. XCode -> Preferences -> Key Bindings

방법을 선택하고 ⌘ + Ctrl + Shift + H를 사용합니다.  그러나 XCode-> 환경 설정-> 키 바인딩에서 다른 바로 가기를 지정할 수도 있습니다.


1
나는 개인적으로 ⌘ + H 사용 (. 첫 번째 '숨기기 엑스 코드'에서 그것을 해제가-지정하면 스위치에해야합니다 그냥 유형 "숨기기"필터 상자를 선택하고 백 스페이스로 삭제)
drpawelo

2

이상하게도 리팩토링 도구는 검색이 아닌 모든 메서드 호출을 감지 할 수 있습니다.

그래서 나는 단순히 내 메서드의 이름을 고유 한 이름 (예 : resetPlayer로 재설정)으로 변경 한 다음 일반 텍스트 검색에서 새 이름을 사용하는 데 사용합니다.

1.) 메뉴> 편집> 리팩터링 ...> 고유 한 이름으로 이름 변경

2.) 새 이름 검색


실제로 리팩터링 작업을 완료하지 않고 미리보기에서 수정 될 모든 위치를 검토 할 수도 있습니다.
funroll

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