OC--内存管理(1)
来源:互联网 发布:mac上如何装office 编辑:程序博客网 时间:2024/06/06 20:38
一、 什么是内存管理:
1> 移动设备的内存有限,每个app所能占用的内存是有限制的
2> 当app多占用的内存较多的时候,系统会发出警告,这时就得回收一些不需要再使用得内存空间,比
如回收一些不需要得对象,变量等。
二 、如何管理内存
对象的基本结构:
1> 每个oc对象都有自己的引用计数器,是一个整数,表示“对象被引用的次数”,即有多少个人正
在使用这个oc对象
2> 每个oc对象内部专门有4个字节的存储空间
引用计数器的作用
1> 使用alloc 、new 、 copy 创建出来的新对象的计数器值默认为 1
2>当对象的引用计数器为0时,该对象会被回收
引用计数器的操作
1> 给对象发送一条 retain 消息,可以使该对象的引用计数器值+1(retain 方法返回本身)
例如: _age = [age retain]
2> 给对象发送一条release消息,可以使该对象的引用计数器值-1
3> 给对象发送一条retaincount消息,可以获取该对象当前的引用计数器值
对象的销毁
1> 当一个对象值为0时,那么它将被销毁,占用的内存被系统回收
2> 当一个对象被销毁时,系统会自动想对象发送一条dealloc 消息
3> 一般会要重写dealloc方法,在这里释放相关资源。dealloc就像对象的遗言
dealloc方法重写
1> 在dealloc 中一定要调用[super dealloc]方法,而且要放到最后面
内存管理原则
1> 对你拥有的对象负责,你只能释放你拥有的对象
2> 由alloc 、 new 、 copy 来创建的对象,都必须在不使用的时候进行 release 或者 autorelease 来对对象
的计数器归0
3> 在一定的代码里面 ,对同一对象做的alloc 、 new 、 copy 的操作次数应该于 release 、autorelease 的
操作次数相同
什么是野指针?
野指针:就是指向僵尸对象(所占用内存已经回收的对象,不能再被使用)的指针
在内存管理中常见的经典错误
EXE __BAD__ACCESS 这句话表示访问的是坏内存
多个对象之间的内存管理
1> 使用某个对象时,让对象的引用计数器+1 (retain)
2> 不想使用对象时,让对象的引用计数器-1(release)
3> 谁retain, 谁 release
4> 谁alloc ,谁release
注意:
不是通过alloc产生的对象就不需要release
- OC 内存管理(1)
- OC--内存管理(1)
- OC内存管理-1
- OC内存管理1
- OC+1-内存管理
- 【总结】 - OC内存管理(1)
- OC内存管理(ARC)
- OC--内存管理(2)
- OC内存管理(一)
- OC内存管理-OC笔记
- OC语法<2.1>内存管理:手动内存管理1
- oc学习之旅:内存管理1
- OC第四课(内存管理)
- 5、内存管理(自定义MyArray)-OC
- oc学习笔记(八)内存管理
- 黑马程序员-----OC内存管理(一)
- 黑马程序员-----OC内存管理(二)
- 黑马程序员-----OC内存管理(三)
- ACDREAM 03C Robbers(贪心专场)
- 黑马程序员---------------JAVA基础--------正则表达式
- day17/CollectionsDemo4.java
- 面对象
- JSP标准动作、EL表达式和JSTL
- OC--内存管理(1)
- 字符串的填充、复制与加密和解密
- day17/CollectionToArray.java
- 命令行的简单使用
- 链表 Partition List
- 综合设计ui 彩票设计基础界面搭建
- Linux环境编程编译工具与动态态库
- leetcode-Populating Next Right Pointers in Each Node
- Android 编程下 Touch 事件的分发和消费机制