iOS 循环引用

作者: 飞不越疯人院 | 来源:发表于2019-04-17 11:14 被阅读2次

1. 循环应用的分类:

  • 自循环引用;
  • 相互循环引用;
  • 多循环引用;
自循环引用:

一个对象中有一个成员变量A; 如果给A赋值这个对象的元对象则会造成自循环引用;

相互循环引用

类似delegate中不用weak修饰,而是用strong修饰; 会造成相互引用;

多循环引用

类似相互循环引用只不过这个是多个对象(A->B->C->D->E->A);


2. 如何破处循环引用?

  • 开发中尽量避免循环引用;
  • 合适的时机手动断开循环引用;

具体方案:

    1. __weak

日常开发中的delegate使用方法;

    1. __block

MRC__block修饰的对象不会增加其引用计数,从而避免循环引用
ARC__block修饰的对象会被强引用, 无法避免循环引用, 需要手动解除引用;

    1. __unsafe_unretained

修饰的对象不会增加其引用计数,从而能避免循环引用; 但是被修饰的对象释放后不会被置为nil,变成了野指针(区别于weak);


3. 循环应用的示例

1. NSTimer
2. Block
3. delegate

相关文章

  • iOS闭包循环引用精讲

    iOS闭包循环引用精讲 iOS闭包循环引用精讲

  • 如何在 iOS 中解决循环引用的问题

    如何在 iOS 中解决循环引用的问题 如何在 iOS 中解决循环引用的问题

  • iOS复习之Block

    iOS面试中如何优雅回答Block iOS block循环引用

  • iOS中Timer循环引用的原因以及解决办法。

    循环引用是iOS面试当中经常会被问到的东西,而在循环引用当中,最典型的是Timer造成的循环引用,Timer为什么...

  • iOS Runtime 数据结构

    ios内存布局 内存管理方案 数据结构 ARC & MRC 引用计数 弱引用 自动释放池 循环引用 ios内存布...

  • iOS 循环引用

    关于循环引用看着3篇文章就够了,拿走不谢! 循环引用 循环引用 OC中的block OC中的block 关于 bl...

  • iOS循环引用

    以下所有内容属笔者原创, 如有雷同纯属巧合, 未经允许不得转载. 这篇内容主要讲解 定时器 中的循环引用, 常见...

  • iOS循环引用

    在iOS开发中,循环引用是个老生常谈的问题.delegate为啥使用weak修饰,block为什么需要weakSe...

  • iOS循环引用

    什么是循环引用? 循环引用:是指多个对象相互引用,导致内存无法释放,从而导致内存泄露。 循环引用的四种情况? 父类...

  • ios循环引用

    首先,研究ios循环引用,离不开怎么使用strong和weak类型的引用和mrc下内存管理和arc下的内存管理。a...

网友评论

    本文标题:iOS 循环引用

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