【发布时间】:2013-01-05 13:51:58
【问题描述】:
我想将配置变量存储在一个中心位置。变量在运行时不会改变。它们应该可以从项目中的任何类访问。
我目前的方法是创建一个 GlobalSettings.h 文件,其中定义了这样的配置变量
#define kCacheAge 10.0 //Max. Cache Age in Seconds
#define kNavigationTitleTint colorWithRed:0.443 green:0.471 blue:0.502 alpha:1.0
#define kNavigationTitleFont boldSystemFontOfSize:20.0
...在我需要的地方加上他们的名字。
缺点:
- 我需要在每个类中手动包含这个 GlobalSettings.h 文件
- 我无法将这些常量作为字符串的一部分插入(字符串处理似乎比替换操作强)
有没有更好的方法来做到这一点,也许可以避免提到的缺点?存储配置变量的最佳实践?
【问题讨论】:
-
避免在
#defines 中使用 cmets。如果你使用if (kCacheAge == 1.0) {之类的东西,它会通过在行中间插入注释来换行。 -
是的,如果您想在 cmets 中记录您的#define 常量,请将注释放在上面的行中。
-
我有点不同意这是完全重复的。 (更不用说@Cyrille作为原始问题提出的问题本身就是一种不幸的误导,因为当用户似乎要求本地化字符串资源加载的等效项时,它使用编译时标头,这是样板文件,但在接受的答案中没有提到。)
标签: objective-c ios