引用计数器作用:
当使用alloc, new, copy 创建 一个新对象时,新对象的引用计数器默认1
当引用计数器为0时,对象占用的内存会被系统回
引用计数器操作:
给对象发送一条retain消息,计数器+1;(返回对象本身)
给对象发送一条release消息,计数器-1;
可以给对象发送retainCount消息获得当前的引用计数器
对象的销毁:
当一个对象的引用计数器值为0时,那么它将被销毁,其占用的内存被系统回收
当一个对象被销毁时,系统会自动向对象发送一条dcalloc消息
一般会重写dealloc方法在里面释放相关资源,dealloc就像对象的遗言
一般重写dealloc方法,就必须调用[super dealloc],并且放在最后调用
不要直接调用dealloc方法
retain ,release方法的基本使用
retain:计数器加1
release:计数器-1
retainCount:获取当前计数器
dealloc:当一个对象要被回收的时候,就会调用
一定要调用[super dealloc];
这句调用要放在最后面
野指针:指向僵尸对象(不可用内存)的指针,给野指针发送消息会报错(EXC_BAD_ACCESS)
僵尸对象:所占用的内存已被回收,僵尸对象不能在使用
空指针:没有指向任何东西的指针(存储的东西是nil,NULL,0),给空指针发送消息不回报错
retain方法会返回对象本身
如果你通过alloc,new,或[mutable]copy 来创建一个对象,就必须调用release或autorelease
换句话说,不是你创建的,就不用你去[auto]release
只要你调用了retain,无论这个对象是如何生成的,你都要调用release
总结:
1.想使用某个对象,就应该让对象的计数器+1,(让计数器做一次retain操作)
2.不想再使用某个对象,计数器-1,(release)
3.谁retain,谁release
4.谁alloc,谁release
|
|