iphone:通过代码在Target的设置中获取User Defined变量?

KON*_*ONG 30 iphone xcode target xcconfig

我的项目有多个目标.每个目标都有自己的Class文件来设置东西.我想将该Class名称存储在目标设置(Info.plist或Target的Building设置)中.这样我就可以根据这个设置定义我需要在每个目标中使用哪个类.

根据这个问题,我User Defined在每个Target的建筑设置中放置了"特定于目标的变量".

但不知道如何在我的代码中取回它?

ton*_*lon 66

由于Info.plist文件也已预处理,您可以使用此方法:

对于示例CLASS_NAME,在构建设置中定义用户定义的设置.并且是Info.plist文件的关键.将密钥命名为CLASS_NAME并将值设置为${CLASS_NAME}.

然后,您可以访问此设置:

NSString* className = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CLASS_NAME"];
Run Code Online (Sandbox Code Playgroud)


ton*_*lon 9

您不能直接使用构建设置中定义的变量.这些变量旨在由构建工具使用.

而是在预处理器宏变量中定义预处理器宏,如'MYVAR = 5'.您可以在代码中访问这些宏,如:

#if MYVAR==5
    //Do something
#endif
Run Code Online (Sandbox Code Playgroud)

请注意,这些表达式的评估是在构建时发生的,而不是在运行时.

在不关心价值的情况下定义宏是非常典型的用法.例如,在调试构建设置中定义'DEBUG = 1',在发布构建设置中定义'RELEASE = 1'.

然后,您可以使用#ifdef或#ifndef进行测试

#ifdef DEBUG
    // Log
#endif
Run Code Online (Sandbox Code Playgroud)

  • 如果我理解得很好,就无法直接检索构建设置值?因为对于秘密和密钥(每个配置改变),最好不要通过Plist. (4认同)