内存空间分为堆和栈
- 对象的内存空间放在堆里,(动态产生)不可能随便回收。局部变量放在栈里,代码块运行完就回收了。
- 每一个oc对象都有一个引用计数器(4个字节),放在对象里。表示引用的次数。
引用计数器的操作
- 当使用alloc , new 或者 copy 创建一个对象时,新对象的引用计数器默认是1.
- 当一个对象的引用计数器为0时,对象占用的内存就会被系统回收。
- 给对象发送 retain消息就可以给计数器加一。(retain 方法返回对象。)
- 给对象发送一个 release 消息,可以使引用计数器减一。
- 可以给对象发送一个 retainCount消息获得当前的引用计数器数值。
对象的销毁
- 当一个对象的引用计数器材数值为0时,那么它将销毁,其占用的内存被系统回收。
- 当一个对象被销毁时,系统就自动向对象发送一条 dealloc消息
- 一般会重写 dealloc 方法,在这里释放相关资源,dealloc 就像对象的遗言。