【问题标题】:Custom compile time variables for use in Objective-C code?用于 Objective-C 代码的自定义编译时变量?
【发布时间】:2011-01-28 09:52:32
【问题描述】:

有没有办法告诉 XCode 在编译时将某些变量或常量插入到您的项目中,以便您在代码中使用?具体来说,我说的是 iOS 项目,所以我认为我没有使用命令行参数的选项。

你问我为什么需要这个?好吧,对于表格视图中的某些单元格,我想添加不同的字幕文本,因为它可以帮助我在开发过程中选择正确的单元格。像这样的东西会很棒:

if (MY_COMPILE_TIME_BOOL_CONST) {
    cell.subtitle.text = [NSString stringWithFormat:@"Contains %i items", count];
} else {
    cell.subtitle.text = @"";
}

但是还有很多其他地方可以派上用场。不知何故,当试图用谷歌搜索答案时,我只能“从 XCode 教程开始”。

谁能指出魔法?

更新:谷歌的神奇词是“预处理器宏”。谢谢,所以!

【问题讨论】:

    标签: objective-c xcode compiler-construction constants


    【解决方案1】:

    如果您从 XCode 启动您的应用程序,您完全可以使用命令行参数。

    您还可以将DEBUG=1 之类的内容添加到预处理器宏中以进行调试配置。然后您可以将预处理器 ifs 添加到您的代码中,相应的代码将仅在 Debug 模式下编译。

    #if DEBUG
    NSLog(@"Foo");
    #endif
    

    后者是我每天使用的。

    【讨论】:

    • 看,我在谷歌上搜索“编译时间常数”,而我真正在寻找的是“预处理器宏”。这正是我想要的方式。谢谢!
    【解决方案2】:

    如果您不想为这些宏添加一个或多个头文件,请尝试以下步骤。

    在 Xcode 中,双击 target,选择您想要特殊定义的 Configuration (Debug/Release/etc)。然后输入 preprocessor em>”在搜索字段中。然后您应该会看到 Preprocessor Macros,您可以在其中输入 extras

    【讨论】:

      【解决方案3】:

      怎么样:

      #define DEBUG YES
      

      在你的.pch

      然后你可以做类似的事情

      if (DEBUG) {
         cell.subtitle.text = @"Counting xyz";
         return cell;
      }
      
      cell.subtitle.text = @"";
      return cell;
      

      如果您主要在模拟器中开发,您还可以检查模拟器。

      【讨论】:

      • 啊,是的,这也是我的第一个想法,但我在一个团队中工作,希望将常量链接到活动配置(调试/发布/分发)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-18
      • 1970-01-01
      • 2012-04-01
      • 1970-01-01
      • 2011-02-19
      相关资源
      最近更新 更多