我知道#define
必须是不变的,但请给我任何好的提示。如何更改#define值
在我的情况下,我通过#define
(例如#define kImageQuality 0.7
)定义了一个常数值。 但是,我想在打开应用程序之前从Settings.Bundle
更改常数值。 这意味着要改变常数值,不是吗? 那是否有任何方法来实现我的目标?
它应该更改为实例变量,而不是#define? 你给出的任何提示,将非常感激。
我知道#define
必须是不变的,但请给我任何好的提示。如何更改#define值
在我的情况下,我通过#define
(例如#define kImageQuality 0.7
)定义了一个常数值。 但是,我想在打开应用程序之前从Settings.Bundle
更改常数值。 这意味着要改变常数值,不是吗? 那是否有任何方法来实现我的目标?
它应该更改为实例变量,而不是#define? 你给出的任何提示,将非常感激。
这是不可能的,因为这样的:
#define constant 3
...
y = x + constant
是完全等价于:
y = x + 3
#define
d常数被取代的甚至在编译代码之前的预处理阶段的值。要动态改变这个值,你必须使用一个全局变量或者其他一些持久机制,如NSUserDefaults
。
只要启用在 - (BOOL)应用程序中更改常量值:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions,我会很高兴。所以我打算用“y = x + 3”程序。非常感谢你! – user1574429 2015-02-07 11:06:12
#define
常常在编译之前被预处理器开始替换(例如kImageQuality
在编译之前被0.7
取代)。因此,在应用程序启动之前加载它是不可能的,因为应用程序不会每次都重新编译。你需要使用一个变量:
float imageQuality = 0.7f;
它必须是一个非常量的全局变量。 – Linuxios 2015-02-07 02:19:52
你可以在viewWillAppear或viewDidLoad上定义一个属性并设置其默认值,并在将来稍后更改它。 – eddwinpaz 2015-02-07 02:22:23