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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

蒂尔

中级黑马

  • 黑马币:58

  • 帖子:98

  • 精华:0

© 蒂尔 中级黑马   /  2016-5-24 15:41  /  750 人查看  /  1 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

1. 内存管理概念理解
2. 引用计数器
3. dealloc方法
4. 多对象内存管理
5. @property的修饰关键字 6. @class用法
7. 内存管理时的循环retain问题
8. 对象自动释放池的使用
================================ 今天的主要知识点 ================================


------------------------------- 知识点细节 ----------------------------
1. 内存管理的范围
* 所有的OC对象(继承自NSObject类)

2. 为什么内存管理只管理OC对象?
* 堆中内存不连续, 无法自动释放

3. 我们如何对OC对象进行内存管理?
* 通过操作对象的"引用计数器"

4. 引用计数器
* 什么是引用计数器?

1> 每个OC对象都有自己的引用计数器
2> 它是一个整数(int类型, 占用4个字节)
3> 从字面上, 可以理解为"对象被引用的次数"
4> 也可以理解为: 它表示有多少人正在用这个对象


* 引用计数器的作用?
1> 系统通过"引用计数器"来判断当前对象是否可以被释放

* 对象的"引用计数器"的操作方式
1> retain, +1
2> release, -1
3> retainCount, 获取对象引用计数器的值


5. 关闭ARC的方法
* 选中项目 -> 选中Build Settings -> 选中All -> 搜索 Automatic Reference Counting -> 修改为No


6. dealloc方法
* 当对象即将被销毁, 系统自动给对象发送一条dealloc消息
* 因此, 从dealloc方法有没有被调用, 就可以判断出对象是否被销毁
* 重写了dealloc方法, 必须调用[super dealloc], 并且放在最后面调用
* 不要自己直接调用dealloc方法


7. 野指针\空指针\僵尸对象
* 僵尸对象: 已经被销毁的对象(不能再使用的对象)
* 野指针: 指向僵尸对象(不可用内存)的指针
* 空指针: 没有指向存储空间的指针(里面存的是nil, 也就是0)
** 注意: 给空指针发消息是没有任何反应的, 不会

1 个回复

倒序浏览
good   good,,,,,顶贴,收下了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马