预编译器条件编译两种情况

时间:2016-01-05 15:24:12

标签: ios swift

我的App中有类似的内容:

#if PRODUCTION
let code: String? = "1111"
#elseif DEMO
let code: String? = "2222"
#elseif TEST
let code: String? = "3333"
#else
let code: String? = "0000"
#endif

问题在于,在具有标志DEMOTEST的部署目标中,我为第4行和第6行获得Definition conflicts with previous value。这怎么可能?是#elseif不应该是排他性的?

更新

虽然很奇怪,但这很有效:

let code: String?

#if PRODUCTION
code = "1111"
#elseif DEMO
code = "2222"
#elseif TEST
code = "3333"
#else
code = "0000"
#endif

我还有一些目标,其中只定义TESTPRODUCTION并且它与前面的代码一起工作,所以我想只有可能被编译的情况才会被解析。

1 个答案:

答案 0 :(得分:1)

构建配置声明

  

构建配置语句正文中的每个语句都是   解析即使它没有被遵守。

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Statements.html

我不知道为什么Apple会解析Build Configuration Statement中的每个语句,但是他们这样做了,我认为这会导致问题。

相关问题