Да
//In your header
extern NSString *FrobnitzerCalibrationHigh;
extern NSString *FrobnitzerCalibrationMedium;
extern NSString *FrobnitzerCalibrationLow;
//In your implementation
NSString *FrobnitzerCalibrationHigh = @"FrobnitzerCalibrationHigh";
NSString *FrobnitzerCalibrationMedium = @"FrobnitzerCalibrationMedium";
NSString *FrobnitzerCalibrationLow = @"FrobnitzerCalibrationLow";
Вы можете создать пару макросов и поместить их в заголовок вашего префикса:
//Semicolons intentionally omitted (see below)
#define DECLARE_STRING_CONSTANT(name) extern NSString *name
#define DEFINE_STRING_CONSTANT(name) NSString *name = @#name
Затем используйте их в заголовках и реализациях классов:
//In your header
DECLARE_STRING_CONSTANT(FrobnitzerCalibrationHigh);
DECLARE_STRING_CONSTANT(FrobnitzerCalibrationMedium);
DECLARE_STRING_CONSTANT(FrobnitzerCalibrationLow);
//In your implementation
DEFINE_STRING_CONSTANT(FrobnitzerCalibrationHigh);
DEFINE_STRING_CONSTANT(FrobnitzerCalibrationMedium);
DEFINE_STRING_CONSTANT(FrobnitzerCalibrationLow);
(Макросы опускают точки с запятой, потому что их использование будет снабжать их. Если бы у макросов также были точки с запятой, расширение было бы extern NSString *FrobnitzerCalibrationHigh;;
- безвредно в этом случае, но если бы я это сделал, меня бы это беспокоило, в основном потому, что не безвреден в некоторых других случаях.)