每个OC对象都有自己的引用计数器,专门记录该OC对象(任何继承了NSObject的对象,对其他基本数据类型int、struct、enum等无效)被引用的次数,是个整数,占用四个字节。
当使用alloc、new创建新对象时,新对象引用计数器默认为1.当引用计数器为0时,对象占用的内存就会被系统回收,即对象被销毁。
retain消息:计数器+1,返回对象本身。
release消息:计数器-1。没有返回值。调用release方法时,不会释放对象,仅仅将计数器-1。
retainCount:获取当前计数器值。
对象被销毁时,系统会向对象发送一个deallloc消息。重写dealloc方法时,必须调用[super dealloc],并且放在最后调用。
调用release方法时,最易出现野指针错误。野指针:指向僵尸对象(不可用的内存即已经被释放的内存空间)的指针。
EXC_BAD_ACCESS error:访问一块已经被回收、不可用的内存。
OC中不存在空指针错误,给空指针发送消息不报错。
|
|