前言
对象应该什么时候被回收?
当有人使用这个对象的时候,这个对象就千万不能回收。
只有在没有任何人使用这个对象的时候,才可以回收。
一、我怎么知道这个对象,它到底有没有人在用呢?引用计数器
1)每一个对象都有一个属性,叫做retainCount,引用计数器,类型是unsigned long,占据8个字节。
引用计数器的作用:用来记录当前这个对象,有多少个人正在使用它。
默认情况下,创建1个对象出来,这个对象的引用计数器的默认值是1.
2)当多1个人使用这个对象的时候,应该先让这个对象的引用计数器的值+1,代表这个对象多1个人使用。
3)当这个对象少1个人使用的时候,应该先让这个对象的引用计数器的值-1,代表这个对象少1个人使用。
4)当这个对象的引用计数器变为0的时候,代表这个对象无人使用。这个时候,我们的系统就会自动回收这个对象。
二、如何去操作这个引用计数器呢?
1.为对象发送1条retain消息,对象的引用计数器就会加1
1)为对象发送1条retain消息,对象的引用计数器就会加1,当多1个人使用对象的时候才发
2)为对象发送1条release消息,对象的引用计数器就会减1,当少1个人使用对象的时候才发
3)那我想看看这个引用计数器是多少,怎么办呢,为对象发送1条retainCount消息,就可以取到对象的引