เหตุใดจึงไม่ProjectName-Prefix.pch
สร้างอัตโนมัติXcode 6
?
ส่วนหัวของ precompile นั้นไม่จำเป็นอีกต่อไปหรือไม่?
ฉันควรเขียนรหัสที่เคยมีProjectName-Prefix.pch
มาก่อนที่ไหน
เหตุใดจึงไม่ProjectName-Prefix.pch
สร้างอัตโนมัติXcode 6
?
ส่วนหัวของ precompile นั้นไม่จำเป็นอีกต่อไปหรือไม่?
ฉันควรเขียนรหัสที่เคยมีProjectName-Prefix.pch
มาก่อนที่ไหน
คำตอบ:
ฉันสงสัยว่าเป็นเพราะโมดูลซึ่งลบความต้องการสำหรับ #import <Cocoa/Cocoa.h>
ฉันสงสัยว่าเพราะของโมดูลซึ่งเอาความต้องการสำหรับ
ในกรณีที่จะใส่รหัสที่คุณจะใส่ในส่วนหัวของคำนำหน้าไม่มีรหัสคุณควรใส่ในส่วนหัวของคำนำหน้า ใส่การนำเข้าของคุณลงในไฟล์ที่ต้องการ ใส่คำจำกัดความของคุณลงในไฟล์ของตนเอง ใส่มาโครของคุณ ... ไม่มีที่ไหนเลย หยุดเขียนมาโครเว้นแต่จะไม่มีวิธีอื่น (เช่นเมื่อคุณต้องการ__FILE__
) หากคุณต้องการมาโครให้ใส่ไว้ในส่วนหัวและรวมไว้
ส่วนหัวของคำนำหน้านั้นจำเป็นสำหรับสิ่งที่มีขนาดใหญ่และใช้งานได้เกือบทุกอย่างในระบบทั้งหมด (เช่น Foundation.h
) หากคุณมีสิ่งที่ยิ่งใหญ่และแพร่หลายคุณควรพิจารณาสถาปัตยกรรมของคุณใหม่ ส่วนหัวของคำนำหน้าทำให้โค้ดนำมาใช้ซ้ำได้ยากและแนะนำปัญหาการสร้างที่ละเอียดอ่อนหากไฟล์ใด ๆ ในรายการที่สามารถเปลี่ยนแปลงได้ หลีกเลี่ยงปัญหาเหล่านี้จนกว่าคุณจะมีปัญหาเวลาสร้างร้ายแรงที่คุณสามารถสาธิตได้รับการปรับปรุงอย่างมากด้วยส่วนหัวของคำนำหน้า
ในกรณีนี้คุณสามารถสร้างมันขึ้นมาแล้วส่งไปยังเสียงดังกราว แต่มันหายากอย่างเหลือเชื่อที่มันเป็นความคิดที่ดี
แก้ไข: สำหรับคำถามเฉพาะของคุณเกี่ยวกับ HUD ที่คุณใช้ในตัวควบคุมมุมมองทั้งหมดของคุณใช่คุณควรนำเข้ามันอย่างแน่นอนในทุกตัวควบคุมมุมมองที่ใช้งานจริง สิ่งนี้ทำให้การอ้างอิงชัดเจน เมื่อคุณใช้ตัวควบคุมมุมมองของคุณในโครงการใหม่ (ซึ่งเป็นเรื่องปกติถ้าคุณสร้างตัวควบคุมของคุณได้ดี) คุณจะรู้ทันทีว่ามันต้องการอะไร สิ่งนี้มีความสำคัญอย่างยิ่งสำหรับหมวดหมู่ซึ่งสามารถทำให้รหัสยากที่จะนำมาใช้ซ้ำหากพวกเขาโดยนัย
ไฟล์ PCH ไม่ได้อยู่ที่นั่นเพื่อกำจัดรายการอ้างอิง คุณควรยังคงนำเข้าUIKit.h
หรือFoundation.h
ตามความจำเป็นเช่นเดียวกับแม่แบบ Xcode เหตุผลสำหรับ PCH คือการปรับปรุงเวลาที่สร้างเมื่อต้องรับมือกับส่วนหัวขนาดใหญ่มาก (เช่นใน UIKit)
TWAPIManager.m
ไปยังโครงการอื่นคุณจะได้รับข้อผิดพลาดที่TWALog()
ไม่ได้กำหนดไว้โดยไม่มีคำใบ้เกี่ยวกับตำแหน่งที่จะค้นหา ฉันพบปัญหาดังกล่าวในโครงการขนาดใหญ่หลายแห่งที่พยายามแบ่งปันรหัส การสร้างTWAPILog.h
และนำเข้าจะช่วยแก้ปัญหานี้ด้วยต้นทุน dev เล็กน้อย
หากไม่มีคำถามว่าเหมาะสมหรือไม่คุณสามารถเพิ่มไฟล์ PCH ด้วยตนเอง:
เพิ่มไฟล์ PCH ใหม่กับโครงการ: ไฟล์> อื่น ๆ > แฟ้ม
ที่ตัวเลือกBuild 's Target ตั้งค่าของPrefix Headerเป็นชื่อไฟล์ PCH ของคุณโดยใช้ชื่อโปรเจ็กต์เป็นคำนำหน้า (เช่นสำหรับโปรเจ็กต์ที่มีชื่อTestProject
และไฟล์ PCH ที่ชื่อMyPrefixHeaderFile
เพิ่มค่าTestProject/MyPrefixHeaderFile.pch
ให้เพลต)
เคล็ดลับ:คุณสามารถใช้สิ่งต่าง ๆ เช่น$(SRCROOT)
หรือ$(PROJECT_DIR)
ไปยังเส้นทางที่คุณใส่ไว้.pch
ในโครงการ
ในเป้าหมายของการตั้งค่าการสร้างตัวเลือกการตั้งค่าของprecompile คำนำหน้าหัวYES
ไป
คุณต้องสร้างไฟล์ PCH ของตัวเอง
เพิ่มNew file -> Other-> PCH file
จากนั้นเพิ่มเส้นทางของไฟล์ PCH นี้ไปยังงานสร้างของคุณ setting->prefix header->path
($ (SRCROOT) /filename.pch)
$(PRODUCT_DIR)/$(PRODUCT_NAME)/PrefixHeader.pch
ฉันจะแสดงให้คุณเห็นด้วยรูป!
เพิ่มไฟล์ใหม่
ไปที่การตั้งค่าโครงการ / สร้าง / แอป LLVM 6.0- ภาษา
ในการเพิ่ม. pch ไฟล์ -
1) เพิ่มไฟล์. pch ใหม่ในโครงการของคุณ -> ไฟล์ใหม่ -> อื่น ๆ -> ไฟล์ PCH
2) ไปที่การตั้งค่าการสร้างโครงการของคุณ
3) ค้นหา "ส่วนหัวคำนำหน้า" คุณสามารถค้นหาได้ภายใต้ Apple LLVM
4) วางสิ่งนี้ลงในช่อง $(SRCROOT)/yourPrefixHeaderFileName.pch
5) ทำความสะอาดและสร้างโครงการ แค่นั้นแหละ!!!
หากคุณตัดสินใจที่จะเพิ่มไฟล์. pch ด้วยตนเองและคุณต้องการใช้ Objective-C เหมือนก่อนหน้า xCode 6 คุณจะต้องนำเข้า UIKit และ Foundation frameworks ในไฟล์. pch มิฉะนั้นคุณจะต้องนำเข้าเฟรมเวิร์กเหล่านี้ด้วยตนเองในแต่ละไฟล์ส่วนหัว คุณสามารถเพิ่มรหัสต่อไปนี้ในขณะที่มันทดสอบภาษาที่ใช้:
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
การใช้:
$ (PROJECT_DIR) / ชื่อโครงการ / PrefixHeader.pch
สำหรับการเพิ่มไฟล์ PCH ใหม่ทำตามขั้นตอนต่อไปนี้:
(1) เพิ่ม fiew ใหม่ - เลือก iOS - อื่น ๆ และไฟล์ PCH
(2) เพิ่มพา ธ ของไฟล์ PCH นี้ไปยังโครงการของคุณ - BuildSetting - Apple LLVM 6.0 Language
เพิ่มชุดคำนำหน้าส่วนหัวเส้นทาง YourApplicationName (root-path) /filename.pch