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

Ios 如果我多次初始化同一属性会发生什么,ios,swift,uiview,initialization,swift2,Ios,Swift,Uiview,Initialization,Swift2,我正在类中声明一个属性: var testView: UIView! 稍后,我将使用以下代码对其进行初始化: testView = UIView(frame: myFrame) 但之后,我再次初始化它: testView = UIView(frame: myFrame) 第一个testView实例发生了什么?testView现在是否使用了两倍的内存?如果我重复这个过程1000次会发生什么?允许我这样做吗?Swift和Object C使用内存管理 除非您在别处引用第一个UIview,否则在对

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

var testView: UIView!
稍后,我将使用以下代码对其进行初始化:

testView = UIView(frame: myFrame)
但之后,我再次初始化它:

testView = UIView(frame: myFrame)
第一个testView实例发生了什么?testView现在是否使用了两倍的内存?如果我重复这个过程1000次会发生什么?允许我这样做吗?

Swift和Object C使用内存管理

除非您在别处引用第一个UIview,否则在对testView的连续赋值中,第一个UIview引用计数将变为0,其内存将被释放


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

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

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


就像我将字符串重新初始化为不同的值一样,原始值将被替换,因此如果我将字符串指定为与旧值相同的值,它将被替换,记住当您将
ui视图
重新指定为相同的值时,旧值将被替换。为什么需要将旧值替换为相同的值?

如@mario zannone所述,Swift和Objective-C使用ARC(自动引用计数),它将处理属性初始化过程中发生的所有事情,另一方面,如果您使用iOS4中的Objective-C,则必须管理它。