ส่วนหัวที่คอมไพล์แล้วพร้อมปัญหาค่าคงที่

ฉันมีไฟล์ค่าคงที่บางไฟล์ "Constants.h" ในโปรเจ็กต์ของฉันที่ฉันรวมไว้ในไฟล์ Prefix.pch เพื่อให้ใช้ได้กับคลาสทั้งหมดในโปรเจ็กต์ของฉัน พวกมันมีเพียงคำสั่ง #define มากมาย

ชั้นเรียนของฉันไม่รู้จักค่าคงที่เหล่านี้ (ไม่มีการเติมข้อความอัตโนมัติ) และ Xcode ให้ข้อผิดพลาด "Undeclared Identifier" ทุกครั้งที่ฉันใช้ อย่างไรก็ตาม เมื่อฉันรันโปรเจ็กต์ ทุกอย่างทำงานได้ดี (ตั้งค่าให้ละเว้นข้อผิดพลาด)

มีวิธีใดบ้างที่ฉันสามารถกำจัดคำเตือนเหล่านี้ได้? #pragma เพิกเฉยต่อพวกมันในไฟล์คำนำหน้าหรืออะไรสักอย่าง? ฉันได้ลองใช้ตัวเลือกมากมาย รวมถึงการตั้งค่า "ส่วนหัวคำนำหน้าพรีคอมไพล์" เป็น NO ในการตั้งค่าบิลด์

มีความคิดอะไรบ้าง?

แก้ไข: ฉันได้ลองลบข้อมูลที่ได้รับและทำความสะอาด / ลบโฟลเดอร์บิลด์โดยไม่เกิดประโยชน์

อาจเป็นที่น่าสังเกตว่าฉันมี 3 เป้าหมายในโครงการของฉันและอีกหนึ่งโครงการภายในโครงการนี้

นอกจากนี้ #imports บางส่วนยังนำเข้าคลาสปกติอีกด้วย เช่นเดียวกับส่วนขยายหมวดหมู่บน UIFont และคลาส Analytics สิ่งนี้สามารถส่งผลกระทบต่อมันได้หรือไม่?


person TTillage    schedule 16.08.2012    source แหล่งที่มา
comment
ตัวระบุที่ไม่ได้ประกาศถือเป็นข้อผิดพลาด ไม่ใช่คำเตือน คุณไม่สามารถคอมไพล์และรันโปรแกรมโดยใช้ตัวระบุที่ไม่ได้ประกาศ   -  person Martin R    schedule 16.08.2012
comment
แก้ไขให้ถูกต้องครับ หมายความถึงข้อผิดพลาด ฉันตั้งค่าให้ละเว้นข้อผิดพลาด ดังนั้นโปรแกรมยังคงคอมไพล์และทำงานได้ดี xcode แจ้งข้อผิดพลาดเหล่านี้ให้ฉันเมื่อฉันแก้ไขโค้ด   -  person TTillage    schedule 16.08.2012
comment
และมันจะไม่รู้จักพวกมันทันทีหลังจากสร้าง โดยปกติแล้วเมื่อฉันอยู่ในคลาสที่ใช้ค่าคงที่เหล่านั้นเท่านั้นที่จะเริ่มเห็น 'ข้อผิดพลาด'   -  person TTillage    schedule 16.08.2012
comment
คุณได้ตั้งค่าอะไรให้ละเว้นข้อผิดพลาดกันแน่? คุณไม่สามารถคอมไพล์และรันโปรแกรมที่มีข้อผิดพลาดได้   -  person Martin R    schedule 16.08.2012
comment
เป็นการดีกว่าที่จะตอบคำถามของคุณเองมากกว่าแก้ไขคำถามและทำเครื่องหมายว่าแก้ไขแล้ว เพื่อที่จะไม่ปรากฏในรายการคำถามที่ยังไม่ได้ตอบ   -  person john.k.doe    schedule 16.08.2012
comment
ฉันไม่สามารถตอบคำถามของตัวเองได้เพราะมันไม่ยอม เพราะผู้ใช้ใหม่ไม่สามารถตอบคำถามของตัวเองได้ภายใน 4 ชั่วโมงหลังจากโพสต์   -  person TTillage    schedule 18.08.2012


คำตอบ (4)


เพื่อแก้ไขปัญหานี้ ฉันต้องเปลี่ยนแฟล็ก 'Precompile Prefix Header' เป็น NO ในการตั้งค่า Build ของเป้าหมาย การทำเช่นนี้ คุณจะสูญเสียประสิทธิภาพในการสร้างที่ได้จากการมีไฟล์ส่วนหัวที่คอมไพล์ที่แคชไว้ แต่ในกรณีของฉัน Prefix Header ของฉันมีขนาดเล็กมาก ดังนั้นฉันจะไม่เห็นการโจมตีในเวลาที่ใช้ในการสร้าง

person Peter    schedule 19.12.2012
comment
วิธีนี้ช่วยฉันได้เช่นกัน แต่มันทำให้การคอมไพล์ช้าลงอย่างมาก มีวิธีใดที่จะหลีกเลี่ยงสิ่งนั้น? - person fishinear; 11.01.2014

ลองลบข้อมูลที่ได้รับจากโครงการ บางครั้ง Xcode จำเป็นต้องจัดทำดัชนีโครงการของคุณใหม่เพื่อลบ "ข้อผิดพลาด" เช่นนี้

ผู้จัดงาน > โครงการ > โครงการของคุณ

คลิกที่ปุ่ม "ลบ" ทางด้านขวาของแถวข้อมูลที่ได้รับ

ออกจาก Xcode ทันที จากนั้นเปิดใหม่อีกครั้ง

person Ian L    schedule 16.08.2012
comment
ได้ลองหลายครั้งแล้ว ลองลบโฟลเดอร์บิลด์ ทำความสะอาด ฯลฯ แล้วจะกลับมาอีก - person TTillage; 16.08.2012
comment
แก้ไขปัญหาของฉัน ฉันติดอยู่ภายในหนึ่งชั่วโมง - person Zeeshan; 03.03.2014

ฉันมีไฟล์ PCH ที่นำเข้าไฟล์ .h ที่มีมาโครจำนวนมาก (โดยเฉพาะ ฉันใช้ MJGAvailability ส่วนหัวที่เตือนเมื่อฉันใช้คุณลักษณะที่ใหม่กว่าเป้าหมายการปรับใช้ของฉัน) การแทนที่:

#import "MJGAvailability.h"

กับ

#include "MJGAvailability.h"

แก้ไขปัญหานี้ให้ฉัน

person fishinear    schedule 11.01.2014

ฉันมีมาโครตัวประมวลผลล่วงหน้าในหนึ่งในเป้าหมายของฉันที่ฉันย้ายจาก 'มาโครตัวประมวลผลล่วงหน้า' เป็น 'มาโครตัวประมวลผลล่วงหน้าที่ไม่ใช้ในส่วนหัวที่คอมไพล์ล่วงหน้า' และนั่นช่วยแก้ไขปัญหาได้

person TTillage    schedule 17.08.2012