【问题标题】:what happens if I initialise the same property multiple times如果我多次初始化同一个属性会发生什么
【发布时间】:2015-09-02 13:33:56
【问题描述】:

我在一个类中声明一个属性:

var testView: UIView!

稍后,我使用以下代码对其进行初始化:

testView = UIView(frame: myFrame)

但是,稍后,我再次初始化它:

testView = UIView(frame: myFrame)

第一个 testView 实例发生了什么? testView 现在是否使用了两倍的内存?如果我重复这个过程 1000 次会发生什么?我可以这样做吗?

【问题讨论】:

    标签: ios swift uiview initialization swift2


    【解决方案1】:

    Swift 和 Object C 使用ARC 内存管理。

    除非您在别处引用第一个 UIview,否则在连续分配给 testView 时,第一个 UIView 引用计数将变为 0,并且其内存将被释放。

    因此 testView 将始终使用一个 UIView 所需的内存,即使您重复该过程 1000 次。

    【讨论】:

      【解决方案2】:

      在这种情况下,您只需覆盖这些值。你可以做1000次,但它没有意义。它只是消耗了一些 CPU 容量。

      每次创建类的新实例时,ARC 都会分配一块内存来存储有关该实例的信息。此内存保存有关实例类型的信息,以及与该实例关联的任何存储属性的值。

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

      【讨论】:

        【解决方案3】:

        就像我将一个字符串重新初始化为不同的值一样,原始值会被替换,所以如果我将字符串分配给与旧值相同的值,那么在重新分配UIView 时请记住这一点旧值被替换为相同的值。为什么需要用相同的值替换旧值?

        【讨论】:

        • 就像@mario zannone 提到的那样,Swift 和 Objective-C 使用 ARC(自动引用计数),如果您使用 iOS4 中的 Objective-C,它将处理初始化属性时发生的所有事情另一方面,你必须管理它。
        猜你喜欢
        • 2021-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-22
        相关资源
        最近更新 更多