OC 内存管理小结
来源:互联网 发布:json数据 汉字编码 编辑:程序博客网 时间:2024/06/05 21:12
内存管理的原因
系统资源有限,所以每个app所能占用的内存是有限制的
OC中提供了一个机制来实现内存管理,它被称为“引用计数
· 每一个对象都有一个引用计数(retain count)
· 对象被创建的时候,引用计数的值是1
· 当引用计数值是0的时候,对象将被系统统一销毁
· 我们可以通过调用一些方法来操作引用计数的值
管理范围:任何继承了NSObject的对象,对其他基本数据类型(int、char、float、double、struct、enum等)无效
每个OC对象内部专门有4个字节的存储空间来存储引用计数器
3.引用计时器操作
对象的建立:
· alloc:为一个新对象分配内存,并且它的引用计数为1。调用alloc方法,你便有对新对象的所有权
· copy:制造一个对象的副本,该副本的 引用计数为1,调用者具有对副本的所有权
· retain:使对象的引用计数加1,并且获得对象的所有权
对象的销毁:
· release:使对象的引用计数减1,并且放弃对象的所有权
· autorelease:使对象的引用计数在未来的某个时候减1,并且在那个时候放弃对象的所有权
当一个对象的引用计数器值为0时,那么它将被销毁,其占用的内存被系统回收
1 当一个对象被销毁时,系统会自动向对象发送一条dealloc消息
2 一般会重写dealloc方法,在这里释放相关资源,dealloc就像对象的遗言
3 一旦重写了dealloc方法,就必须调用[super dealloc],并且放在最后面调用
4 不要直接调用dealloc方法
关于retaine的操作
1 给对象发送一条retain消息,可以使引用计数器值+1(retain方法返回对象本身)
2 给对象发送一条release消息,可以使引用计数器值-1
3 可以给对象发送retainCount消息获得当前的引用计数器值
对象的销毁
1 当一个对象的引用计数器值为0时,那么它将被销毁,其占用的内存被系统回收
2 当一个对象被销毁时,系统会自动向对象发送一条dealloc消息
3 一般会重写dealloc方法,在这里释放相关资源,dealloc就像对象的遗言
4 一旦重写了dealloc方法,就必须调用[superdealloc],并且放在最后面调用
5 不要直接调用dealloc方法
6 一旦对象被回收了,它占用的内存就不再可用,坚持使用会导致程序崩溃(野指针错误)
内存管理原则:
1.只要对象存在就不会销毁。
2 对自己创建的对象负责。
3 谁创建,谁release
通过alloc、new或[mutable]copy来创建一个对象,那么你必须调用release或autorelease
不是自己创建的不能去release.
4 谁retain,谁release
对一个对象调用了 retain,,就必须相应的调用release
autorelease
1 给某个对象发送一条autorelease消息时,就会将这个对象加到一个自动释放池中
2. 当自动释放池销毁时,会给池子里面的所有对象发送一条release消息
3 调用autorelease方法时并不会改变对象的计数器,并且会返回对象本身
4. autorelease实际上只是把对release的调用延迟了,对于每一次autorelease,系统只是把该对象放入了当前的autorelease pool中,当该pool被释放时,该pool中的所有对象会被调用Release
- OC 内存管理小结
- oc内存管理小结
- OC属性,点语法,内存管理小结
- OC基础-内存管理小结(手动)
- OC内存管理-OC笔记
- OC内存管理
- Oc-内存管理
- OC内存管理
- OC 内存管理
- oc 内存管理
- OC内存管理
- oc -内存管理 笔记
- OC之【内存管理】
- OC内存管理小记
- OC内存管理(转载)
- OC-内存管理
- 2、OC内存管理
- Oc内存管理
- 大数除法
- eclipse 和 Android studio:SHA1和MD5证书指纹数据获取
- ReactiveCocoa框架菜鸟入门(一)——CocoaPods添加ReactiveCocoa
- 微商如何玩?微客巴巴告诉你10条超级干货!-“纯情年代”
- STM8的数据@near @tiny定义
- OC 内存管理小结
- Struts旅程(一)Struts简介和原理
- 用js的for循环获取radio选中的值
- js集合操作(简)
- Java之美[从菜鸟到高手演变]之设计模式
- JAVA中的父类引用指向子类对象
- struts旅程(二)Struts登录示例
- android 官方教程intent
- 第十二周阅读程序4