对象一出生引用计数器就为1
一个对象引用计数器为0时才会被释放
给一个对象发送一条retain 计数器+1
发送一个release给对象,计算器-1
dealloc方法
一般会重写dealloc方法,在这列是方法相关资源,dealloc就
//问题1:什么是引用计数器?
答:
对象被指针指向或被使用的次数
每个OC对象都有自己的引用计数器,它是一个整数,表示有多少人正在用这个对象
//问题2:引用计数器的作用?
答:
计算对象被使用次数
当使用alloc、new或者copy创建一个对象时,对象的引用计数器默认就是1
当对象的引用计数器为0时,对象占用的内存就会被系统回收
如果对象的计数器不为0,那么在整个程序运行过程,它占用的内存就不可能被回收(除非整个程序已经退出 )
//问题3:怎么操作引用计数器?
答:
给对象发送一条retain消息,可以使引用计数器值+1(retain方法返回对象本身
给对象发送一条release消息, 可以使引用计数器值-1
给对象发送retainCount消息, 可以获得当前的引用计数器值
需要注意的是: release并不代表销毁\回收对象, 仅仅是计数器-1
alloc new copy retain 会增加对象的引用计数器一次
release能减少对象的引用计数器一次
//问题4:dealloc 方法的作用?
当对象的引用计数器为0时,对象就会被释放,在对象被释放前就会调用这这个方法
对象即将被销毁时系统会自动给对象发送一条dealloc消息
(因此, 从dealloc方法有没有被调用,就可以判断出对象是否被销毁)