美文网首页
学习笔记-weak和unowned使用时究竟怎么选择?

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

作者: 最晴天 | 来源:发表于2022-01-14 16:21 被阅读0次

学习路上的疑惑
为什么在看过一些博客或是文档后,过上一两天,也可能是半天就忘记了呢?
反思后,我意识到有两个方面的问题:一是没有进行实践,多敲代码,是学习的唯一捷径!二是没有总结归纳,形成自己的知识体系!
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使用时究竟怎么选择?

    学习路上的疑惑为什么在看过一些博客或是文档后,过上一两天,也可能是半天就忘记了呢?反思后,我意识到有两个方面的问题...

  • [译]Swift中的weak self和unowned self

    在找关于weak和unowned方面的知识,看到的一篇文章。 原文来自Weak self and unowned ...

  • Swift 内存管理,weak 和 unowned

    在内存管理中,weak和unowned都可以防止发生引用循环问题,但是weak和unowned的区别在哪里呢? u...

  • unowned和weak的区别—swift

    weak引用和unowned引用有些类似但不完全相同。Unowned 引用,像weak引用一样,不会增加对象的引用...

  • 内存管理

    三种引用 weak unowned的使用限制 weak unowned只能用在类实例上面 协议遵守AnyObjec...

  • weak和unowned

    一、循环引用 如图所示的情况中,john指向的对象强引用了unit4A指向的对象,而unit4A指向的对象又强引用...

  • weak和unowned

    unowned: 假设引用对象在生命周期总是存在,这样其属性声明是非可选类型。 weak: 对象在预见时间内可能为...

  • WEAK 和 UNOWNED

    相同 1、weak和unowned都不会增加引用计数器 2、两者都是为了避免循环引用而存在的 区别 1、weak指...

  • Swift中关于unowned的坑

    “Like a weak reference, an unowned reference does not kee...

  • [Swift Tips 读书笔记]从 Objective-C 到

    @objc 和 dynamic 可选协议和协议扩展 内存管理,weak 和 unowned @autoreleas...

网友评论

      本文标题:学习笔记-weak和unowned使用时究竟怎么选择?

      本文链接:https://www.haomeiwen.com/subject/ybancrtx.html