美文网首页
ARC内存泄露的情况

ARC内存泄露的情况

作者: peal | 来源:发表于2016-03-15 23:09 被阅读121次
ARC(Automatic Reference Counting),是iOS 5推出的新功能。为了解决MRC管理下的内存泄漏,野指针等问题。

ARC虽然不需要手动去调用retain和release消息,编译器会自动在合适的位置为我们添加这些代码,但是ARC还是存在内存泄露的。
比如

.循环参照

A有个属性参照B,B有个属性参照A,如果都是strong参照的话,两个对象都无法释放,常见于deleage声明为strong,实际应该用assign。还有就是block中使用了当前对象,实际应该把当前对象复制给一个局部变量然后用__block修饰。

.死循环问题

比如如果某个ViewController中有无限循环,也会导致即使ViewController对应的view关掉了,ViewController也不能被释放,这种问题常发生于animation处理。

.循环引用的基本上有三个常见场景:
.定时器(一方面,NSTimer经常会被作为某个类的成员变量,而NSTimer初始化时要指定self为target,容易造成循环引用。 另一方面,若timer一直处于validate的状态,则其引用计数将始终大于0。)
.block(引用当前对象)
.代理(assign)

相关文章

  • ARC内存泄露的情况

    ARC(Automatic Reference Counting),是iOS 5推出的新功能。为了解决MRC管理下...

  • 内存泄漏/管理

    ARC 下内存泄露的那些点performSelector延时调用导致的内存泄露iOS ARC下几种导致内存泄露的场...

  • ARC下内存泄露的几种情况

    delegate设为strong造成的内存泄露(两个对象相互强引用) NSTimer 造成的内存泄露(两个对象相互...

  • 内存及性能优化

    1. 用ARC管理内存 ARC除了帮你避免内存泄露,ARC还可以帮你提高性能,它能保证释放掉不再需要的对象的内存。...

  • 增强iOS应用程序性能方法

    1. 使用ARC进行内存管理 ARC除了能避免内存泄露外,还有助于程序性能的提升 2.在适当的情况下使用reuse...

  • iOS性能优化:Instruments使用实战

    这里讲述在没有ARC的情况下,如何使用Instruments来查找程序中的内存泄露,以及NSZombieEnabl...

  • [Swift]学习笔记--内存管理

    Swift中的内存是自动管理的(ARC),但是在有些情况下,还是会引起内存泄露的,下面就来记录一下哪些情况需要我们...

  • iOS 内存管理机制

    最近接手的一个 APP 项目有内存泄露问题, 由于用了 ARC 管理内存, 使得找出哪里内存泄露了变得更加困难, ...

  • 使用富文本OHAttributedLabel

    使用教程: 请在arc下使用,不要arc与mrc混用造成内存泄露! 源码地址 http://pan.baidu....

  • UITextView内存泄露

    前言:今天用leak测试工程的时候出现内存泄露了,后来找到是UITextView出现内存泄露了,很奇怪明明是ARC...

网友评论

      本文标题:ARC内存泄露的情况

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