ARC MRC

2016-07-15  本文已影响19人  iOS学末

内存的手动管理(MRC):手动引用计数器管理,申请到某一块内存,在使用之后,要手动释放;未释放内存,会造成内存的浪费,俗称内存泄露;调用该对象时,要做retain操作,使用完成后要release,最后还要重写dealloc方法,对该类的所有对象做释放,所以在mrc的代码会有autorelease,retain,release等词语)

内存的自动管理(ARC iOS5之后开始使用):自动引用计数管理,内存的申请,使用和释放过程都交给系统自动实现;不允许出现autorelease,retain,release等词语)

引用计数器

1.和内存管理相关的方法

1)alloc 引用计数器自动设为1

2)retain 引用计数器+1 返回了经过+1以后的当前实例对象

3)release 引用计数器-1,并不一定是释放

4)retainCount 获取引用计数器的值

5)dealloc 当实例对象被销毁之前,系统自动调用。

一定要调[super dealloc]

和内存管理相关的名词

1)僵尸对象:此对象被销毁,不能再使用,不能给它发送任何消息

2)野指针:指向僵尸对象(不可用的内存)的指针,给野指针发送消息将会产生不可控的后果。

3)空指针:没有指向任何对象的指针,给空指针发消息不会产生任何行为

内存管理原则

1.如果你想持有某个对象,就必须负责让做一次retain操作,引用计数器+1.

2.如果你想放弃对某个对象的持有权,就要负责让其做一次release操作,引用计数器-1.

上一篇下一篇

猜你喜欢

热点阅读