Xcode ค้นหาฟังก์ชันผู้โทร


117

ใน Xcode ฉันจะค้นหาฟังก์ชันผู้โทรทั้งหมดของฟังก์ชันเฉพาะได้อย่างไร


2
ฉันแนบรูปภาพมากับคำตอบแล้ว และเวอร์ชัน XCode ในปัจจุบันรองรับสิ่งนี้ คุณยินดีที่จะโหวต / ยอมรับคำตอบหรือไม่หากคุณพอใจกับคำตอบใด ๆ ??
David T.

คำตอบของ @uiroshan ด้านล่างนี้สะดวกที่สุดถ้าคุณทำสิ่งนี้มาก ๆ (⌘ + Ctrl + Shift + H)
drpawelo

คำตอบ:


125

Xcode 4.5 (ในเบต้า) มีฟังก์ชันนี้ เมื่อคุณไฮไลต์ว่า ... ฟังก์ชันคุณสามารถตรวจสอบ "ผู้โทร" และ "ผู้โทร"

แก้ไขฉันเชื่อว่ามันอยู่ที่ด้านบนซ้ายของแผงไฟล์สำหรับไฟล์นั้น ... ดังนั้นให้ดับเบิลคลิกที่ฟังก์ชั่นเพื่อไฮไลต์แล้วคุณคลิกที่ตัวเลือกแผงไฟล์ (อันที่มี "เปิดล่าสุดเปิดไม่ได้บันทึก ... ฯลฯ "เลื่อนลง

แก้ไข # 2

นี่คือภาพเพื่อชี้แจง (เนื่องจากฉันไม่รู้ว่าปุ่มเมนูนี้เรียกว่าอะไร) ใส่คำอธิบายภาพที่นี่:

นอกจากนี้ - XCode 4.5 ไม่ใช่เบต้าอีกต่อไปฉันเชื่อว่าและเป็นจริงในที่สาธารณะ

แก้ไข # 3

โปรดทราบว่าสิ่งที่ผู้โทรนี้ไม่ได้ค้นหาว่าถูกเรียกภายใต้performSelectorวิธีการเช่นเดียวกับผู้โทรเฉพาะที่มีสิ่งนี้performSelectorจะไม่ปรากฏขึ้นหากคุณทำสิ่งที่ชอบ:

[self performSelector:@selector(checkIfShouldStopMovement) withObject:nil afterDelay:0.25];

5
มันเป็น View-> Standard Editor-> แสดงรายการที่เกี่ยวข้องดูคำตอบของฉัน ( stackoverflow.com/a/13472334/888091 )
pille

2
@pille อ่า ฉันเห็นฉันไม่รู้ว่าคุณสามารถเข้าถึงได้ด้วยวิธีนั้น ฉันได้เพิ่มคะแนนคำตอบของคุณแล้วและฉันได้แก้ไขคำตอบเพื่อแสดงวิธี UI ขอบคุณทางลัด !!
David T.

55

ใน XCode 4.5 วิธีที่เร็วที่สุดคือ:

  1. เลือกวิธีการในรหัส (ดับเบิลคลิกหรือทำเครื่องหมายโดยใช้เคอร์เซอร์ของเมาส์)
  2. กดCtrl+1
  3. เลือก "ผู้โทร" จากเมนูป๊อปอัป

นี่คือทางลัดสำหรับไปที่ View-> Standard Editor-> Show Related Items ในเมนู title ของ XCode


1
เมนูผู้โทรยังคำนึงถึงบริบทดังนั้นคุณไม่จำเป็นต้องเลือกวิธีการก่อน เพียงวางไว้ที่ใดก็ได้ภายในวิธีการที่คุณต้องการดูผู้โทรก่อนเรียกใช้ทางลัด <kbd> Ctrl </kbd> + <kbd> 1 </kbd>
Jay

หวานไม่รู้!
pille

2
ฉันไม่อยากจะเชื่อเลยว่าไม่มีวิธีที่เร็วกว่านี้ ... ฉันค่อนข้างผิดหวังกับ Xcode หลังจากใช้ IntelliJ
stevo.mit

35

ใช้คีย์ผสม⌘ + Ctrl + Shift + H บน XCode 7 เป็นต้นไป


2
ทางออกที่สวยงาม ขอบคุณ!
Myxtic

เคอร์เซอร์ต้องอยู่บนชื่อฟังก์ชัน
Ali Momen Sani

ในกรณีที่คุณแก้ไขทางลัด: ค้นหา "ค้นหาลำดับชั้นการโทร"
Brainray

4
ฉันจะหักนิ้วเพื่อกดชุดนี้!
Accid Bright

ขอบคุณฉันกำลังมองหาวิธีแก้ปัญหานี้
Hitesh Agarwal

23

นอกจากนี้ยังสามารถเข้าถึงได้ผ่านตัวแก้ไขผู้ช่วยดังที่แสดงในภาพหน้าจอด้านล่าง วิธีใดก็ตามที่คุณมีจุดแทรกในตัวแก้ไขหลักทางด้านซ้ายจะมีผู้โทรแสดงในตัวแก้ไขผู้ช่วย ฉันพบว่านี่เป็นวิธีที่ดีที่สุดในการดูผู้โทรแต่ละคนติดต่อกันเนื่องจากเมื่อคุณเลือก "ผู้โทร" แล้วคุณสามารถเลือกผู้โทรคนถัดไปผ่านเมนูป๊อปอัปถัดไปทางด้านขวาในแถบกระโดด

ใส่คำอธิบายภาพที่นี่


นี่เป็นสิ่งที่ดี - แต่ฉันต้องใช้เวลาสักพักในการหาวิธีเริ่มต้น สำหรับคนอื่น ๆ ที่ติดตามฉัน: โปรดสังเกตว่าในภาพหน้าจอของ Brian รายการแบบเลื่อนลงที่เปิดอยู่ไม่ใช่เมนู "แสดงรายการที่เกี่ยวข้อง" (ctrl + 1) ที่กล่าวถึงในคำตอบอื่น ๆ ในตัวแก้ไขผู้ช่วยให้คลิกเมนูแบบเลื่อนลงทางขวาของปุ่ม "ไปข้างหน้า" แล้วเลือกผู้โทร
Ashley

1
คุณไม่จำเป็นต้องใช้ตัวแก้ไขผู้ช่วย คุณสามารถเปิดเมนูเดียวกันในตัวแก้ไขหลัก
funroll

18

ใน Xcode-7 คุณมีฟังก์ชั่นการรับสายสืบ คลิกขวาที่ฟังก์ชันแล้วคลิก "ค้นหาลำดับชั้นการโทร": การอ้างอิงรูปภาพ:


4
เรียกว่า "ลำดับชั้นการโทร" และแป้นพิมพ์ลัดคือ: CTRL-SHIFT-COMMAND-H (ในขณะที่เลือกบางอย่าง)
Mr. Zystem

7

Xcode 10 ขึ้นไปดูเหมือนจะทำให้ง่ายขึ้น เพียงแค่คำสั่งคลิกที่ฟังก์ชั่นและคุณจะเห็นในเมนูแบบเลื่อนลง

ใส่คำอธิบายภาพที่นี่


4

ใช้ค้นหาในโครงการเป็นข้อความหรือเป็นสัญลักษณ์

AFAIK ไม่มีอะไรเทียบเท่ากับ Call Hierarchy ที่รู้จักจาก Eclipse หรือ NetBeans


1
มี "caller" และ "callee" ใน xCode

4

กด⌘+Ctrl+Shift+Hทางลัดเมื่อเลือกวิธีการที่สนใจ (ด้วยเมาส์หรือเคอร์เซอร์) (ตามคำตอบของ @uiroshan)

แต่คุณสามารถระบุทางลัดอื่นใน XCode -> Preferences -> Key Bindings

เลือกวิธีการและใช้⌘ + Ctrl + Shift + H  แต่คุณสามารถระบุทางลัดอื่นใน XCode -> Preferences -> Key Bindings


1
ฉันใช้⌘ + H เป็นการส่วนตัว (คุณจะต้องสลับยกเลิกการกำหนดจาก 'ซ่อน XCode' ก่อนเพียงพิมพ์ "ซ่อน" ในช่องตัวกรองเลือกและลบด้วย Backspace)
drpawelo

2

น่าแปลกที่เครื่องมือ refactoring สามารถตรวจจับการเรียกเมธอดทั้งหมด แต่ไม่ใช่การค้นหา

ดังนั้นฉันจึงใช้มันเพื่อเปลี่ยนชื่อวิธีการของฉันเป็นชื่อเฉพาะ (เช่นรีเซ็ตเป็น resetPlayer) จากนั้นใช้ชื่อใหม่ในการค้นหาข้อความปกติ

1. ) Menu> Edit> Refactor ... > เปลี่ยนชื่อเป็นชื่อเฉพาะ

2. ) ค้นหาชื่อใหม่


คุณยังสามารถตรวจสอบสถานที่ทั้งหมดที่จะแก้ไขในการแสดงตัวอย่างโดยไม่ต้องดำเนินการรีแฟคเตอร์ให้เสร็จสิ้น
funroll

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.