【问题标题】:How to change #define value如何更改#define 值
【发布时间】:2015-04-07 07:22:26
【问题描述】:

我知道#define 必须保持不变,但请给我任何好的提示。

在我的例子中,我通过#define(例如#define kImageQuality 0.7)定义了一个常量值。 但是,我想在打开应用程序之前更改 Settings.Bundle 的常量值。 这意味着改变常数值,不是吗? 这是我的目标吗?

它应该改为实例变量而不是#define? 您提供的任何提示将不胜感激。

【问题讨论】:

  • 它必须是一个非常量的全局变量。
  • 您可以定义一个属性并在 viewWillAppear 或 viewDidLoad 上设置其默认值,并在以后更改它。

标签: ios objective-c c-preprocessor


【解决方案1】:

#define 常量在编译之前被预处理器替换(例如,kImageQuality 在编译之前被0.7 替换)。因此,在应用程序启动之前加载它是不可能的,因为应用程序不会每次都重新编译。你需要使用一个变量:

float imageQuality = 0.7f;

【讨论】:

    【解决方案2】:

    这是不可能的,因为:

    #define constant 3
    ...
    y = x + constant
    

    完全等同于这个:

    y = x + 3
    

    #defined 常量在代码编译之前的预处理阶段被它们的值替换。要动态更改值,您必须使用全局变量或其他一些持久性机制,例如 NSUserDefaults

    【讨论】:

    • 只要能够更改 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中的常量值,我会很高兴。所以我要选择“y = x + 3”程序。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多