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)

你可能感兴趣的:(ARC内存泄露的情况)