快速静态常量变量更改导致重新编译
Posted
技术标签:
【中文标题】快速静态常量变量更改导致重新编译【英文标题】:swift static constant variable change cause recompiled 【发布时间】:2017-01-10 01:20:47 【问题描述】:如果我在一个文件中有一个全局常量比如let host = XXX,那么这个常量的改变会导致所有的项目文件重新编译
【问题讨论】:
这是一个陈述,而不是一个问题。 我的意思是,如果我改变这个常量的值,它会导致重新编辑这个项目。这让我有麻烦了。 东西会被重新编译的事实似乎是合乎逻辑的,因为它可以很容易地基于这些常量执行一些优化。如果您将其设为var
,您或许可以避免重新编译,但您可能会损失一些效率。
【参考方案1】:
正确,在该范围内更改某些内容会导致重新编译。
就像您要更改特定类中的常量一样,该类将被重新编译。
如果您需要在代码之外更改值,例如host
那么最好使用包含一些属性的 plist 文件。
示例:
settings.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>host</key>
<string>1.2.3.4</string>
</dict>
</plist>
example code to get value:
guard let settingsFileURL = NSBundle.mainBundle().URLForResource("settings", withExtension: "plst") else
fatalError("unable to find plist file")
let settings = NSDictionary(contentsOfURL: settingsFileURL)
guard let host = settings?.valueForKey("host") as? String else
fatalError("unable to get host value from plist file")
print("host = \(host)")
【讨论】:
以上是关于快速静态常量变量更改导致重新编译的主要内容,如果未能解决你的问题,请参考以下文章