通常有一个常量,比如字符串,与类相关联,比如一个视图控制器。
将这些常量编写为计算变量而不是常量变量是否有任何计算好处?
例如:
let myConstant = "myConstant"
对战:
var myConstant: String {
return "myConstant"
}
我的想法是,只要类是存在的属性,前者存储在内存中,而后者每次都被计算,因此不会占用额外的内存。
现在,如果常量是不经常访问的(例如,在视图加载时只设置标签文本一次),在我看来这样做可能有一些优势,但我不确定实际上是否没有任何差别,或者差异可以忽略不计。
我想这可能属于过早优化的范畴,但如果其中一个或另一个是更好的实践,也可以使用它,因为它非常简单,并且可以在项目的任何地方使用。
我能看到的唯一缺点是额外的代码行和其他字符。
答案 0 :(得分:1)
恕我直言,计算属性使用的内存总是大于let常量使用的内存。
原因很简单,你的符号表中可能有字符串myConstant
,因此常量只能转换为指向此字符串地址的指针,而计算的var可能会作为函数在堆栈上分配,然后它将指针返回到符号表中的字符串。
这可能会产生一个(实际上)很小的区别,而且我假设当你对同一个地址进行大量访问时,编译器会优化它,就像编译器对集合的访问一样。
我没有任何文档来验证它,但我认为是合理的,以便可视化和理解使用常量常量或计算属性var时发生的事情。