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

时间:2010-07-23 07:54:40

标签: iphone xcode target xcconfig

我的项目有多个目标。每个目标都有自己的Class文件,用于设置内容。我想将Class名称存储在目标设置(Info.plist或目标的建筑设置)中。这样我就可以根据这个设置定义我需要在每个目标中使用哪个类。

根据this question,我在每个Target的建筑设置中添加了“特定于目标的User Defined变量”。

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

2 个答案:

答案 0 :(得分:66)

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

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

然后,您可以通过以下方式访问此设置:

NSString* className = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CLASS_NAME"];

答案 1 :(得分:9)

您无法直接使用构建设置中定义的变量。这些变量旨在由构建工具使用。

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

#if MYVAR==5
    //Do something
#endif

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

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

然后您可以使用#ifdef或#ifndef

进行测试
#ifdef DEBUG
    // Log
#endif