首先我们要知道的是,MRC在ARC之前。
MRC全称是ManualReference Counting,也有人称为Manual Retain Release(MRR)。简单来说就是传统的手工的内存管理方法,内存的分配和回收任务全部落在程序员身上。
而ARC的全称是AutomaticReference Counting,意思为自动内存管理方法。
把程序员要生于逢时来形容MRC和ARC的变化,可以说最为贴切。在IOS 5和Xcode 4.2以前,ARC还没有出现,那时候使用Oc的程序员在编写代码的时候还必须考虑内存管理的问题,并且要在代码中加入retain , release , dealloc 等语句来管理内存,而且必须小心谨慎,不然就会出现内存泄漏和无效指针,甚至导致程序的崩溃。几乎每一个alloc,retain,copy都会有release与之对应,如果有上万行代码,工作量可想而知。
在MRC中,存在以下标识符
内存管理,顾名思义就是管理自己创建的涉及内存的指针,对象。当你新建一个对象,完成了对它的使用,你就要自行把它的内存释放出来,否则就造成了内存的泄漏(memory leak)。当你新建一个指针,所记录的地址的对象已经被释放,那么这就是一个无效的指针(dangling pointer),这同样增加了程序的不稳定性。
所以在MRC中,存在着如此的对象管理规则,每一个对象被创建以后,都会有一个Reference Count,