iphone:通过代码在 Target 的设置中获取用户定义的变量?
Posted
技术标签:
【中文标题】iphone:通过代码在 Target 的设置中获取用户定义的变量?【英文标题】:iphone: get User Defined variable in Target's setting by code? 【发布时间】:2011-03-19 23:31:42 【问题描述】:我的项目有多个目标。每个目标都有自己的Class
文件用于设置内容。我想将该 Class
名称存储在目标设置中(Info.plist
或 Target 的 Building 设置)。这样我就可以根据这个设置定义我需要在每个目标中使用哪个类。
根据this question,我在每个Target的Building Setting中放入了“一个target-specific User Defined
变量”。
但不知道如何在我的代码中找回它?
【问题讨论】:
你是指哪个目标设置?构建设置? Info.plist?你在哪里设置变量? 我把它放在了Target的Build Setting中。 【参考方案1】:由于 Info.plist 文件也被预处理,您可以使用这种方法:
在您的构建设置中定义用户定义的设置,例如 CLASS_NAME。
以及您的 Info.plist 文件的密钥。将键命名为 CLASS_NAME 并将值设置为 $CLASS_NAME
。
然后您可以通过以下方式访问此设置:
NSString* className = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CLASS_NAME"];
【讨论】:
【参考方案2】:您不能直接使用构建设置中定义的变量。这些变量旨在供构建工具使用。
而是在预处理器宏变量中定义一个预处理器宏,例如“MYVAR=5”。您可以在代码中访问这些宏,例如:
#if MYVAR==5
//Do something
#endif
请注意,这些表达式的计算发生在构建时而不是运行时。
只定义宏而不关心值是非常典型的用法。例如,在调试构建设置中定义“DEBUG=1”,在发布构建设置中定义“RELEASE=1”。
然后您可以使用#ifdef 或#ifndef 进行测试
#ifdef DEBUG
// Log
#endif
【讨论】:
哦,我明白了。 Info.plist 怎么样。我可以将Class
名称存储在那里,然后从代码中获取吗?
我已经添加了另一个答案,关于如何使用 info.plist。
如果我理解得很好,没有办法直接检索构建设置值吗?因为对于秘密和密钥(根据配置更改)最好不要通过 Plist。以上是关于iphone:通过代码在 Target 的设置中获取用户定义的变量?的主要内容,如果未能解决你的问题,请参考以下文章
TARGET_OS_IPHONE 和 ApplicationTests
哪个条件编译用于在 Mac 和 iPhone 特定代码之间切换?