/**
Swift的ARC机制只是对于基于引用计数的对象才有效,对于基于值拷贝的,比如struct,enum是无效的。
位拷贝就是浅拷贝,值拷贝就是深拷贝。值拷贝后出现一个新的数,不走引用计数。
如果旧值被新值覆盖,那么旧的对象就会被销毁。
*/
/**
循环强引用是在两个类对象属性互相保持对方的强引用时产生的
解决对象之间的循环强引用:
【1】弱引用 weak
【2】无主引用 unowned reference
弱引用必须被声明为变量,标明其值能在运行时被修改,因为弱引用可以没有值,所以必须将每一个弱引用声明为可选类型
weak var name:String?
无主引用是永远有值的
unowned let name = "hello";
*/
/**
无主引用以及显示展开的可选属性。
类1嵌套类2,并且在类1的析构方法中调用了类2的析构方法,那么在类1中的属性类2,需要在类型结尾处加上!的方式
将这个属性声明为显式展开的可选类型属性。
*/
/**
解决闭包引起额循环强引用:
在闭包中,如果引用self需要在闭包中提前写好 [unowned self] in 然后在写需要执行的代码,也可以使用self来调用属性。
[unowned self]是占有列表,表示的是 "用无主引用而不是强引用来占有self"
*/