如果我多次初始化同一属性会发生什么

时间:2015-09-02 13:33:57

标签: ios swift uiview initialization swift2

我在课堂上声明一个属性:

var testView: UIView!

稍后,我使用以下代码初始化它:

testView = UIView(frame: myFrame)

但是,稍后,我再次初步确定它:

testView = UIView(frame: myFrame)

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

3 个答案:

答案 0 :(得分:3)

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

除非您在其他地方引用第一个UIview,否则在对testView的连续分配中,第一个UIView引用计数将变为0并且将释放其内存。

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

答案 1 :(得分:1)

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

  

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

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

答案 2 :(得分:1)

就像我将一个字符串重新初始化为一个不同的值一样,原始值被替换,所以如果我将字符串赋值为与旧值相同的值,则替换它时,在重新分配{{1将旧值替换为相同的值。为什么需要用相同的值替换旧值?