iphone:在Target';什么是代码设置?

iphone:在Target';什么是代码设置?,iphone,xcode,target,xcconfig,Iphone,Xcode,Target,Xcconfig,我的项目有多个目标。每个目标都有自己的类文件用于设置内容。我想在目标设置(Info.plist或目标的建筑设置)中存储该Class名称。因此,我可以基于此设置定义每个目标中需要使用的类 根据,我将“特定于目标的用户定义的变量”放在每个目标的建筑设置中 但是不知道如何在我的代码中恢复它?您不能直接使用在生成设置中定义的变量。这些变量将由构建工具使用 而是在预处理器宏变量中定义一个预处理器宏,如“MYVAR=5”。您可以在代码中访问这些宏,如: #if MYVAR==5 //Do somet

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

根据,我将“特定于目标的
用户定义的
变量”放在每个目标的建筑设置中


但是不知道如何在我的代码中恢复它?

您不能直接使用在生成设置中定义的变量。这些变量将由构建工具使用

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

#if MYVAR==5
    //Do something
#endif
请注意,这些表达式的计算发生在构建时,而不是运行时

仅定义宏而不考虑值是非常典型的用法。例如,在调试生成设置中定义“DEBUG=1”,在发布生成设置中定义“RELEASE=1”

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


由于Info.plist文件也经过预处理,因此可以使用以下方法:

在生成设置中定义用户定义的设置,例如CLASS_NAME。 还有你的Info.plist文件的密钥。命名密钥CLASS\u Name并将值设置为
${CLASS\u Name}

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

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

你指的是什么目标设定?构建设置?信息列表?你在哪里设置的变量?我把它放在目标的构建设置中。哦,我明白了。那Info.plist呢。我可以将
类的名称存储在那里,并从代码中获取它吗?对于如何使用info.plist,我添加了另一个答案。如果我理解得很好,就无法直接检索构建设置值了?因为对于机密和密钥(每个配置都会更改),最好不要通过Plist。
NSString* className = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CLASS_NAME"];