OC--内存管理(1)

来源:互联网 发布:mac上如何装office 编辑:程序博客网 时间:2024/06/06 20:38

一、 什么是内存管理:
1> 移动设备的内存有限,每个app所能占用的内存是有限制的
2> 当app多占用的内存较多的时候,系统会发出警告,这时就得回收一些不需要再使用得内存空间,比
如回收一些不需要得对象,变量等。

二 、如何管理内存

对象的基本结构:
1> 每个oc对象都有自己的引用计数器,是一个整数,表示“对象被引用的次数”,即有多少个人正
在使用这个oc对象
2> 每个oc对象内部专门有4个字节的存储空间

引用计数器的作用

1> 使用alloc 、new 、 copy 创建出来的新对象的计数器值默认为 1
2>当对象的引用计数器为0时,该对象会被回收

引用计数器的操作

1> 给对象发送一条 retain 消息,可以使该对象的引用计数器值+1(retain 方法返回本身)
例如: _age = [age retain]
2> 给对象发送一条release消息,可以使该对象的引用计数器值-1
3> 给对象发送一条retaincount消息,可以获取该对象当前的引用计数器值

对象的销毁

1> 当一个对象值为0时,那么它将被销毁,占用的内存被系统回收
2> 当一个对象被销毁时,系统会自动想对象发送一条dealloc 消息
3> 一般会要重写dealloc方法,在这里释放相关资源。dealloc就像对象的遗言

dealloc方法重写

1> 在dealloc 中一定要调用[super dealloc]方法,而且要放到最后面

内存管理原则

1> 对你拥有的对象负责,你只能释放你拥有的对象
2> 由alloc 、 new 、 copy 来创建的对象,都必须在不使用的时候进行 release 或者 autorelease 来对对象
的计数器归0
3> 在一定的代码里面 ,对同一对象做的alloc 、 new 、 copy 的操作次数应该于 release 、autorelease 的
操作次数相同

什么是野指针?

野指针:就是指向僵尸对象(所占用内存已经回收的对象,不能再被使用)的指针
在内存管理中常见的经典错误
EXE __BAD__ACCESS 这句话表示访问的是坏内存

多个对象之间的内存管理

1> 使用某个对象时,让对象的引用计数器+1 (retain)
2> 不想使用对象时,让对象的引用计数器-1(release)
3> 谁retain, 谁 release
4> 谁alloc ,谁release
注意:
不是通过alloc产生的对象就不需要release

0 0
原创粉丝点击