มาโครตัวประมวลผลล่วงหน้านั้นยอดเยี่ยมสำหรับการดีบัก ไม่มีอะไรผิดปกติกับ NSLog () แต่มันง่ายที่จะกำหนดฟังก์ชั่นการบันทึกของคุณเองด้วยการทำงานที่ดีขึ้น ต่อไปนี้เป็นชื่อที่ฉันใช้รวมถึงชื่อไฟล์และหมายเลขบรรทัดเพื่อให้ง่ายต่อการติดตามคำสั่งบันทึก
#define DEBUG_MODE
#ifdef DEBUG_MODE
#define DebugLog( s, ... ) NSLog( @"<%p %@:(%d)> %@", self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )
#else
#define DebugLog( s, ... )
#endif
ฉันพบว่าการใส่คำสั่งทั้งหมดนี้ไว้ในส่วนหัวของคำนำหน้าง่ายกว่าการใส่ไฟล์ของตัวเอง คุณสามารถสร้างระบบการบันทึกที่ซับซ้อนมากขึ้นได้โดยให้ DebugLog โต้ตอบกับวัตถุ Objective-C ปกติ ตัวอย่างเช่นคุณอาจมีคลาสการบันทึกที่เขียนไปยังไฟล์บันทึกของตนเอง (หรือฐานข้อมูล) และรวมถึงอาร์กิวเมนต์ 'ลำดับความสำคัญ' ที่คุณสามารถตั้งค่าได้ที่รันไทม์ดังนั้นข้อความดีบั๊กจะไม่แสดงในเวอร์ชันรีลีสของคุณ หากคุณทำสิ่งนี้คุณสามารถสร้าง DebugLog (), WarningLog () และอื่น ๆ )
โอ้และจำไว้ว่า#define DEBUG_MODE
สามารถนำมาใช้ใหม่ได้ในที่ต่างๆในแอปพลิเคชันของคุณ ตัวอย่างเช่นในแอปพลิเคชันของฉันฉันใช้เพื่อปิดใช้งานการตรวจสอบคีย์ใบอนุญาตและอนุญาตให้แอปพลิเคชันทำงานหากว่าก่อนวันที่กำหนด สิ่งนี้ทำให้ฉันสามารถแจกจ่ายสำเนาเบต้าที่มีเวลา จำกัด และทำงานได้อย่างเต็มที่โดยใช้ความพยายามของฉันน้อยที่สุด