学习笔记-weak和unowned使用时究竟怎么选择?

学习路上的疑惑
为什么在看过一些博客或是文档后,过上一两天,也可能是半天就忘记了呢?
反思后,我意识到有两个方面的问题:一是没有进行实践,多敲代码,是学习的唯一捷径!二是没有总结归纳,形成自己的知识体系!
so,开始我的学习笔记之路。
文笔粗略,请多多宽宥~

unowned 修饰的对象,被释放后,将指向一块垃圾内存,此时,再次使用它,将会引起崩溃
而weak修饰的对象1.被释放后,值为nil,此时,再次使用它,并不会引起程序错误;2.当其最后一个强引用被释放的时候,与其相关的资源也会被释放

那么在解决引用循环时,是不是使用weak更好呢?
No!
weak修饰的对象,在使用时,需要进行判断 该对象是否为nil
在确定object和它的父类,拥有相同的生命周期时,使用unowned更好,这样当object被释放的时候,其父类一定也被释放了,不会发生object被释放后,会再次使用它的问题。
当object与使用它的地方,生命周期不同时,使用weak更合适

参考文章:
https://swift.gg/2017/05/16/unowned-or-weak-lifetime-and-performance/

你可能感兴趣的:(学习笔记-weak和unowned使用时究竟怎么选择?)