เหตุใดRefactor ...จึงเป็นสีเทา (ปิดใช้งาน) ใน Xcode
ฉันต้องการเปลี่ยนชื่อชั้นเรียน
เหตุใดRefactor ...จึงเป็นสีเทา (ปิดใช้งาน) ใน Xcode
ฉันต้องการเปลี่ยนชื่อชั้นเรียน
คำตอบ:
เลือกสัญลักษณ์ชั้นในไฟล์ส่วนหัวของมัน - @interface
คือบิตหลัง จากนั้นควรเปิดใช้งานการปรับโครงสร้างใหม่
หากคุณใช้ Objective-C ++ (เช่นผสม Objective-C กับรหัส C ++) การปรับโครงสร้างใหม่จะถูกปิดใช้งานใน xcode เนื่องจากไม่สนับสนุนการปรับโครงสร้างโค้ด C ++
Refactor อาจถูกปิดใช้งานหากไฟล์ที่ได้รับผลกระทบ (ส่วนใหญ่เป็นไฟล์ที่มีคลาสของคุณอยู่) ไม่ได้บันทึกไว้
ฉันใช้ Xcode เป็นเวลา 5 ปีแล้วและการปรับโครงสร้างใหม่ไม่เคยทำงานอย่างถูกต้อง (แม้แต่ xcode 4.6 ก็มีข้อบกพร่องที่สำคัญซึ่งจะทำให้ซอร์สโค้ดของคุณเสียหาย!)
วิธีแก้ปัญหาอยู่เสมอ (ยังคงใช้งานได้ 100% แม้ในกรณีที่รหัสของ Apple ล้มเหลว)
ฉันมีอัตราความสำเร็จ 100% ด้วยวิธีนี้ ฉันเพิ่งลองปรับโครงสร้างใหม่ด้วย "Refactor -> Rename" ของ Apple ใน xcode ล่าสุดและล้มเหลวอีกครั้ง!
(คราวนี้เกิดข้อผิดพลาดที่ไม่ถูกต้อง: "ไม่สามารถระบุภาษาของ" ซึ่งเป็นหนึ่งในข้อความแสดงข้อผิดพลาดที่ Apple ใส่ข้อความผิด)
ฉันจะให้กับโครงการของฉันที่ค้นหาแล้วเปลี่ยนชื่อไฟล์โดยข้อมูลที่ได้รับ
หลังจากนั้นที่xcode -> Project Navigatorฉันจะลบไฟล์
ในตอนท้ายฉันคลิกขวาที่ชั้นเรียนและเพิ่มไฟล์ลงใน ...และเพิ่มไฟล์เหล่านี้อีกครั้ง
มันได้ผลสำหรับฉัน
สำหรับฉันฉันรู้ว่า Refactor ถูกปิดใช้งานเนื่องจากโปรเจ็กต์ Xcode ที่ฉันเปิดนั้นอ้างถึง Base SDK ที่หายไป แก้ไขการตั้งค่าโครงการและในแท็บ Build ตั้งค่า Base SDK เป็นที่คุณมี (เช่นสำหรับฉันนี่คือ iOS 4.2) สิ่งนี้เปิดใช้งาน Refactor สำหรับฉัน
นอกจากนี้อาจเกิดขึ้นได้เมื่อคุณเปลี่ยนชื่อไฟล์สำหรับคลาสไม่ว่าจะเป็น xcode นอกหรือโดย ctrl คลิกชื่อไฟล์แล้วเปลี่ยนชื่อ xcode ปฏิเสธที่จะ refactor หากชื่อไฟล์ไม่ตรงกับชื่อคลาส
ไปที่ไฟล์ส่วนหัวของชั้นเรียนและค้นหาบรรทัดที่คล้ายกับสิ่งนี้:
@interface YourClassName
คลิกขวาที่สัญลักษณ์คลาส (เช่น YourClassName) และคุณจะสามารถเลือก Refactor -> Rename ...
ฉันเพิ่งลองสิ่งนี้และใช้งานได้ใน Xcode 5
มีปัญหานี้เช่นกัน ฉันพยายามค้นหา SDK ที่หายไปบันทึกไฟล์และค้นหารหัส Objective-C ++ ตามที่กล่าวไว้ข้างต้นและสิ่งที่ต้องใช้ในการแก้ไขเครื่องของฉันคือการรีบูต XCode
ดูเหมือนรถเล็ก ๆ ยังคงอยู่
BTW นี่คือสำหรับ XCode 4.0.1
การรีแฟคเตอร์ใช้งานได้หากคุณเปลี่ยนชื่อไฟล์ในตัวนำทางโปรเจ็กต์ก่อน