我在课堂上声明一个属性:
var testView: UIView!
稍后,我使用以下代码初始化它:
testView = UIView(frame: myFrame)
但是,稍后,我再次初步确定它:
testView = UIView(frame: myFrame)
第一个testView实例发生了什么? testView现在使用两倍的内存吗?如果我重复这个过程1000次会怎么样?我被允许这样做吗?
答案 0 :(得分:3)
Swift和Object C使用ARC内存管理。
除非您在其他地方引用第一个UIview,否则在对testView的连续分配中,第一个UIView引用计数将变为0并且将释放其内存。
因此,即使您重复该过程1000次,testView也将始终使用一个UIView所需的内存。
答案 1 :(得分:1)
在这种情况下,您只需覆盖这些值。你可以做1000次,但它没有意义。它只需要一些CPU容量。
每次创建类的新实例时,ARC都会分配一块内存来存储有关该实例的信息。此内存保存有关实例类型的信息,以及与该实例关联的任何存储属性的值。
答案 2 :(得分:1)
就像我将一个字符串重新初始化为一个不同的值一样,原始值被替换,所以如果我将字符串赋值为与旧值相同的值,则替换它时,在重新分配{{1将旧值替换为相同的值。为什么需要用相同的值替换旧值?