内存管理

来源:互联网 发布:中国地图矢量数据 编辑:程序博客网 时间:2024/05/18 03:28

 内存管理的对象:OC中的对象,对基本类型无用

 OC中采用引用计数器对内存管理

 OC中每个对象都有一个引用计数器,是一个整数,表示对象被引用的次数(有多少个人在使用它)

 每个对象会分配4字节的存储空间存引用计数器

 当采用allocnewcopy(mutableCopy)构造一个新对象时,新对象的引用计数器值为1.

 当引用计数器值为0时,这个对象所占的内存就会被释放(也就是说,只要这个对象的引用计数器值不为0,它所占的空间永远不会被释放,除非整个程序退出)

 当给对象发送retain消息,引用计数器值+1

 当给对象发送release消息,引用计数器值-1

 给对象发送retainCount消息,可以获取引用计数器值

 当一个对象的引用计数器值为0时,这个对象所占的空间就会被释放

 当对象被释放时,就会给它发送dealloc消息。不能手动调用,系统自动调用

 一般会重写dealloc方法,重写时,一定要调用[super dealloc];一般放在最后

 引用技术:

 ARCautomatic references counting

 MRC: manual references counting

 黄金法则:

 1、当采用allocnewcopy(mutableCopy)构造一个新对象时,新对象的引用计数器值为1.

 2、如果想要拥有某个对象,需要给它发送retain消息

 3、如果不想使用某个对象,需要给它发送release或者autorelease消息

 4、谁allocnewcopy了,谁需要release

 5、谁retain,谁release


过度释放,不能再次释放已经释放的空间,p是一个野指针(指向一个已经被释放的内存空间,空间不可用)

nil发送消息,不能给野指针发送消息


0 0