iOS循环引用问题

作者: Double丶K | 来源:发表于2016-07-20 11:29 被阅读1267次

OC的内存管理应用了计数的方式来管理内存,这种方式虽然很简单,但是有一个比较大的瑕疵,就是它不能很好的解决循环引用的问题.例如对象A和对象B,相互引用了对方作为自己的成员变量,只有当自己销毁时,才会将成员变量的引用计数减1.因为对象A的销毁依赖于对象B的销毁,而对象B的销毁也依赖于对象A的销毁,这样就造成了循环引用的问题即使在外界已经没有任何指针能够访问到他们了,他们依然无法被释放.

循环引用解决的方法:

我们都知道平常使用协议代理的时候我们要使用弱引用(weak),原因就是弱引用虽然持有对象,但是并不增加引用计数,这样就避免了循环引用的产生.例如:两个ViewController  A和B,A需要弹出B,让用户来进行输入等操作,然后B需要将内容传给A,这个时候ViewController的delegate成员变量通常是一个弱引用,以避免两个控制器相互引用对方造成循环引用问题.

怎么用Xcode检测循环引用问题:

Xcode有个Instruments工具集可以检测循环引用.在菜单栏选择Product->Profile    然后选择Leaks,再单击右下角的Profile按钮,这个时候模拟器会运行起来,如果出现循环引用就出出现红色的线条,然后我们可以切换到Leak这栏,单击Cycles&Roots就能看到已图形的方式显示出来的循环引用.

相关文章

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

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

  • iOS循环引用问题

    检测循环引用方法 引入开源库MLeaksFinder 在Dealloc中打log,判断是否销毁 Instrumen...

  • iOS循环引用问题

    笔者前不久终于发布了自己的APP《小印记》,希望读者能前往App Store下载《小印记》支持一下笔者,谢谢!? ...

  • iOS循环引用问题

    OC的内存管理应用了计数的方式来管理内存,这种方式虽然很简单,但是有一个比较大的瑕疵,就是它不能很好的解决循环引用...

  • iOS闭包循环引用精讲

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

  • NSTimer的循环引用问题解决方案

    iOS开发中,针对循环引用的问题,会有很多方面,block,代理,自循环,多循环,还有一个就是Timer的循环引用...

  • weak-strong dance探究

    循环引用 循环引用是iOS开发常见的问题,虽然现在普遍是ARC工程,但是这个问题仍然无可避免。一般都是两个强引用对...

  • iOS 内存管理 部分二

    主要讲解CADisplayLink 和 NSTimer 的循环引用问题 iOS 内存管理 部分一iOS 内存管...

  • 浅谈OC中的循环引用问题

    Everyone has his dream, but ... ... 谈到循环引用这个问题,相信很多iOS的童鞋...

  • 一个奇怪且无聊的检测Block的想法

    在大多数iOS应用开发过程中, 循环引用一直都是最常见的iOS开发问题之一。通常情况下, 最常见的循环引用问题就是...

网友评论

    本文标题:iOS循环引用问题

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