【问题标题】:Computed property does not require storage allocation计算属性不需要存储分配
【发布时间】:2017-11-04 04:51:42
【问题描述】:

一个基本的问题,甚至可能很愚蠢,但这对我很重要。我不知道答案,感谢您的宝贵时间。

[问题]:

在 Swift 中,计算属性没有任何存储分配,所以它不是真正的变量你可以在第二章第 197 页找到这句话iOS 学徒(第 5 版)

一书

[问题]:

计算属性没有任何存储分配?我不明白这一点。内存中必须有一些地方来保存数据以进行计算,否则,这怎么可能呢?或者,这意味着只计算被调用的值并在数据交给调用者后删除/销毁数据,我在这个概念的正确方向上吗?

谢谢

【问题讨论】:

    标签: swift memory-management allocation computed-properties


    【解决方案1】:

    计算属性很像不带参数并返回值的函数。在计算属性执行的生命周期内,会在堆栈上临时分配一些内存,用于存储计算属性的局部变量。

    除此之外,计算属性的指令必须存储在已编译程序的某个位置。幸运的是,您只需要一份定义副本,即可用于所有实例。

    重要的一点是不需要每个实例的内存。

    【讨论】:

    • 感谢您的时间和解释
    【解决方案2】:

    本质上,这意味着您每次使用它时都会计算结果,而不是引用存储任何先前计算结果的地址。所以每次使用它都会占用内存(计算完成时会释放),但是没有预留一个内存位置来保存以后引用的值(普通变量/对象确实有)。

    【讨论】:

    • 当然。保持好奇!! ?
    猜你喜欢
    • 2017-06-11
    • 2014-06-24
    • 2018-11-29
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 2018-05-24
    • 1970-01-01
    相关资源
    最近更新 更多