A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 用晦而明 中级黑马   /  2015-8-10 19:42  /  358 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如果一个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。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马