โดยทั่วไปฉันใช้วิธีที่โพสต์โดย Barry Wark และ Rahul Gupta
แม้ว่าฉันไม่ชอบคำเดียวกันซ้ำทั้งในไฟล์. h และ. m โปรดทราบว่าในตัวอย่างต่อไปนี้บรรทัดเกือบจะเหมือนกันในไฟล์ทั้งสอง:
// file.h
extern NSString* const MyConst;
//file.m
NSString* const MyConst = @"Lorem ipsum";
ดังนั้นสิ่งที่ฉันชอบทำคือใช้เครื่องจักร preprocessor C ให้ฉันอธิบายผ่านตัวอย่าง
ฉันมีไฟล์ส่วนหัวซึ่งกำหนดมาโครSTR_CONST(name, value)
:
// StringConsts.h
#ifdef SYNTHESIZE_CONSTS
# define STR_CONST(name, value) NSString* const name = @ value
#else
# define STR_CONST(name, value) extern NSString* const name
#endif
คู่ใน. h / .m ของฉันที่ฉันต้องการกำหนดค่าคงที่ฉันทำสิ่งต่อไปนี้:
// myfile.h
#import <StringConsts.h>
STR_CONST(MyConst, "Lorem Ipsum");
STR_CONST(MyOtherConst, "Hello world");
// myfile.m
#define SYNTHESIZE_CONSTS
#import "myfile.h"
และ voila ฉันมีข้อมูลทั้งหมดเกี่ยวกับค่าคงที่ในไฟล์. h เท่านั้น