美文网首页
第33条:以弱引用避免保留环

第33条:以弱引用避免保留环

作者: MrSYLong | 来源:发表于2018-10-14 16:11 被阅读4次

对象图里经常会出现一种情况,就是几个对象都以某种方式相互引用,从而形成环。这种情况通常会泄漏内存,因为最后没有别的东西会引用环中的对象。而环里的对象会因为相互间的引用而继续存活,不被系统回收。

避免保留环的最佳方式就是弱引用。这种引用经常用来表示“非拥有关系”。将属性声明为unsafe_unretained或weak即可。

weak与unsafe_unretained的区别在于,系统把对象实例回收后,weak属性会自动设置为nil,而unsafe_unretained属性仍然指向那个已经回收的实例,这样可能会不安全。

不过无论如何,只要在所指对象已经彻底销毁后还继续使用弱引用,那就依然是个bug、编程错误。

相关文章

  • 第33条:以弱引用避免保留环

    对象图里经常会出现一种情况,就是几个对象都以某种方式相互引用,从而形成环。这种情况通常会泄漏内存,因为最后没有别的...

  • 52个有效方法(33) - 以弱引用避免保留环

    保留环也就是我们常说的循环引用。保留环通常会造成内存泄漏。 避免保留环的最佳方式就是弱引用。这种引用经常用来表示“...

  • iOS -- 弱引用(20)

    以 弱引用 避免保留环 (死循环) 对象图里面经常出现一种情况,就是几个对象都以某种方式互相引用,从而形成'环',...

  • 以弱引用避免保留环--Effective笔记

    1,将某些引用设为weak,可避免出现“保留环”。父引用子 强引用(strong) 子引用父 弱引用(weak...

  • 33.以弱引用避免保留环

    《编写高质量iOS与OS X代码的52个有效方法》--第五章 第33条(ps:此乃读书笔记,加深记忆,仅供大家参考...

  • 《Effective Objective-C 2.0》 阅读笔记

    33. 用弱引用避免保留环 前面已经提到好多次“保留环”了,顾名思义就是对象之间相互引用,导致都无法释放,内存被泄...

  • 第三十三条: 以弱引用避免保留环

    对象图里经常会出现一种情况,就是几个对象都以某种方式互相引用,从而形成"环"(cycle)。由于Objective...

  • 第五章 内存管理—第33条:以弱引用避免保留环

    Objective-C代码经常出现一些情况,就是几个对象都以某种方式互相引用,从而形成"环"(cycle)。由于O...

  • iOS 内存优化

    1. 避免内存泄漏 ① 避免对象之间循环引用(代理一定要弱引用)② block 中对象的循环引用、添加的通知在销毁...

  • 保留环问题

    几个对象相互引用,形成保留环.由于OC内存管理模型使用引用计数构架,多以这种情况通常会照成内存泄漏.这样的话,环里...

网友评论

      本文标题:第33条:以弱引用避免保留环

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