ARC内存泄露的情况

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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Cocoa内存管理机制 (1)当你使用new、alloc、copy方法创建一个对象时,该对象的保留计数器值为1.当...
    John_LS阅读 7,751评论 0 6
  • 内存管理 简述OC中内存管理机制。与retain配对使用的方法是dealloc还是release,为什么?需要与a...
    丶逐渐阅读 6,052评论 1 16
  • 11.看下面的程序,第一个NSLog会输出什么?这时str的retainCount是多少?第二个和第三个呢? 为什...
    AlanGe阅读 4,079评论 1 4
  • 序言 目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了。今年,找过工作人可能会更深刻地体会到今年的就...
    独酌丿红颜阅读 6,984评论 18 60
  • 前言 内存泄露是一个相对挺严重的问题,可是它的存在未引起足够的重视,如果程序运行时一直分配内存而不及时释放无用的内...
    進无尽阅读 5,747评论 0 5