《Objective-C 高级编程》
这本书有三个章节,我针对每一章节进行总结并加上适当的扩展分享给大家。可以从下面这张图来看一下这三篇的整体结构:
本篇是第一篇:引用计数,简单说两句: Objective-C通过 retainCount 的机制来决定对象是否需要释放。 每次runloop迭代结束后,都会检查对象的 retainCount,如果retainCount等于0,就说明该对象没有地方需要继续使用它,可以被释放掉了。无论是手动管理内存,还是ARC机制,都是通过对retainCount来进行内存管理的。
先看一下手动内存管理:
手动内存管理
我个人觉得,学习一项新的技术之前,需要先了解一下它的核心思想。理解了核心思想之后,对技术点的把握就会更快一些:
内存管理的思想
思想一:自己生成的对象,自己持有。
思想二:非自己生成的对象,自己也能持有。
思想三:不再需要自己持有的对象时释放对象。
思想四:非自己持有的对象无法释放。
从上面的思想来看,我们对对象的操作可以分为三种:生成,持有,释放,再加上废弃,一共有四种。它们所对应的Objective-C的方法和引用计数的变化是:
对象操作 | Objecctive-C方法 | 引用计数的变化 |
生成并持有对象 | alloc/new/copy/mutableCopy等方法 | +1 |
持有对象 | retain方法 | +1 |
释放对象 | release方法 | -1 |
废弃对象 | dealloc方法 | 无 |
用书中的图来直观感受一下这四种操作:
下面开始逐一解释上面的四条思想:
思想一:自己生成的对象,自己持有
在生成对象时,使用以下面名称开头的方法生成对象以后,就会持有该对象:
- alloc
- new
- copy
- mutableCopy
举个
04-15 18:47