黑马程序员技术交流社区

标题: 内存管理学习笔记 [打印本页]

作者: 用晦而明    时间: 2015-8-10 19:42
标题: 内存管理学习笔记
如果一个APP使用的内存超过20M系统会发送Memory Warning消息 ,之后会回收一些不使用的内存空间


OC内存管理范围

管理任何继承NSObject的对象,对其他的基本数据类型无效。


BSS段 数据区 代码段  程序启动时候加载

栈区 到代码区是从高地址到低地址

堆区是从低到高


对象所有权

任何对象都可能有一个或多个所有者,只要一个对象至少还拥有一个所有者,他还会继续存在


Cocoa所有权策略

任何自己创建的对象都归自己所有,可使用名字有alloc 和new 开头或名字中包含copy的方法创建对象

使用retain获得一个对象的所有权


对象的引用计数

表示对象被引用的次数,使用这个对象的个数,刚创建对象时,引用计数为1,为0时被销毁。

retainCount 8个字节存储空间存储引用计数 无符号long类型


引用计数器的作用

判断对象是否回收的依据(对象值为nil时引用计数为0但不回收)


retain消息 使引用计数+1

release消息 使引用计数 -1

retainCount消息 获得对象当前的引用计数


当对象被销毁时,系统会自动向对象发送一条dealloc消息,一般重写dealloc方法

若重写dealloc方法就必须调用[super dealloc],并且在代码块的最后调用


对象被收回那么他所占据的存储空间不再可用,坚持使用会导致程序崩溃


如果对象的引用计数不为0那么他占用的内存就不可被回收

任何对象刚创建引用计数为1。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2