我知道#define
必须保持不变,但请给我任何好的提示。
在我的情况下,我按#define
定义一个常量值(例如#define kImageQuality 0.7
)。
但是,我想在打开应用程序之前更改Settings.Bundle
的常量值。
那意味着改变常数值,不是吗?
这是以任何方式实现我的目标吗?
它应该更改为实例变量而不是#define? 你给出的任何提示都会非常感激。
答案 0 :(得分:5)
#define
常量被替换,甚至由预处理器开始(例如kImageQuality
在编译之前被0.7
替换)。因此,在应用程序启动之前加载它是不可能的,因为应用程序不会每次都重新编译。您需要使用变量:
float imageQuality = 0.7f;
答案 1 :(得分:3)
这是不可能的,因为:
#define constant 3
...
y = x + constant
完全等同于:
y = x + 3
在代码编译之前, #define
d常量在预处理阶段被它们的值替换。要动态更改值,您必须使用全局变量或其他一些持久机制,如NSUserDefaults
。