4.ARC是什么?存在的问题?
ARC是iOS 5推出的新功能,全称叫Automatic Reference Counting,自动引用计数。简单地说,就是代码中自动加入了retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了。
使用ARC,只要某个对象被任一strong指针指向,那么它将不会被销毁。如果对象没有被任何strong指针指向,那么就将被销毁。
使用ARC后,不允许调用release,retain、retainCount等方法。
允许重写dealloc,但是不允许调用[super dealloc],系统会默认调用[super dealloc]。
虽然ARC给我们编程带来的很多好多,但也可能出现内存泄露。如下面两种情况:
循环参照:A有个属性参照B,B有个属性参照A,如果都是strong参照的话,两个对象都无法释放。
死循环:如果有个ViewController中有无限循环,也会导致即使ViewController对应的view消失了,ViewController也不能释放。