跟OC一样,Swift也是采取基于引用计数的ARC内存管理文案(针对堆空间)
Swift的ARC中有3种引用:
强引用:默认情况下,引用都是强引用
弱引用:通过weak定义弱引用
必须是可选类型的var,因为实例销毁后,ARC会自动将弱引用设置为nil
ARC自动给弱引用设置nil时,不会触发属性观察器。
无主引用:通过unowned定义无主引用
不会产生强引用,实例销毁后仍然存储着实例的内存地址(类似于OC中的unsafe_unretained)
试图在实例销毁后访问无主引用,会产生运行时错误(野指针)
备注:weak 、unowned 只能用在类实例上面