Tag: 参考文献

自动引用计数 为了了解ARC,您需要了解一些基本知识。 首先,我想让您了解这些基础知识。 结构和枚举的实例按值传递 在这里,我们将string1存储在变量str1中 。 然后,我们将str1的值分配给str2在幕后,将str1的值复制并存储在str2中 。 这意味着将单独的值存储在str1和str2中 。 这些值相等,但是在内存中它们是不同的。 这就是通过价值传递的意义 。 将str1的值分配给str2时 ,它按值传递。 类的实例通过引用传递 当我们将person1分配给person2时 ,不会复制存储在person1中的值。 而是将存储在person1中的Person实例的引用分配给person2 。 这意味着person1和person2指向同一个Person实例。 内存中仅存在 Person 类的 一个实例 。 强引用(ARC计算引用 ) 当父对象引用子对象时,应使用强引用,而不是相反。 也就是说,子类不应强烈引用父类。 弱引用和无主引用(ARC不计算引用) 无主(值是强制性的):—将始终具有值,但不会由自己拥有 弱(值是可选的):-仅当其他人强烈引用该值时才具有值 只要有效的引用在其生命周期中的某个时刻变为零就使用弱引用。 相反,当您知道在初始化期间将其设置为零时,请使用无主引用。 弱引用不能永远是常量,因为它需要能够变异 弧 ARC的基本思想很简单。 它跟踪类实例,并确定何时可以安全地释放其监视的类实例。 它通过计算每个类实例的引用来实现。 在第一个图像中,我们创建了该人的两个实例,因此该处的引用计数为2。 在一秒钟后,我们将person1设为nil,因此引用计数递减并变为1,但是由于这个1 Person类仍然存在,即在内存中。 如果我们使person2也为零,则ARC将释放该人员实例占用的空间,因此该实例将不再可用。