在应用程序运行时更改util类中的#define

时间:2014-10-15 11:59:56

标签: ios objective-c c-preprocessor

假设宏是一个可以从任何视图访问的自定义util类。

如何在应用运行时更改#define APP_THEME_COLOR? (例如,用户可以更改此颜色)

//
//  Macros.h
//

#import <Foundation/Foundation.h>

//App Specific

#define APP_THEME_COLOR [[UIColor alloc] initWithRed:0.0 / 255 green:0.0 / 255 blue:0.0 / 255 alpha:0.9]

(作为一个附带问题,您认为在应用中实现此类功能的最佳方式是什么?,我对#define感到不舒服)

2 个答案:

答案 0 :(得分:1)

您无法在运行时更改#define d的内容,因为即使在编译之前也会对这些声明进行评估。

您可以在应用委托中定义颜色变量,并在UI组件发生变化时通知它们。

请参阅此NSHipster article了解如何实现此目标。

答案 1 :(得分:0)

#define仅在编译时应用。它只是用一个字符串代替另一个字符串。如果要在运行时更改值,请创建一个接受参数的方法......或者直接使用变量而不是文字常量来使用代码。