M牛C原创博客——oc当中的手动内存管理知识要点
来源:互联网 发布:域名一定要公安备案吗 编辑:程序博客网 时间:2024/05/17 22:35
内存管理:
所在的进程空间——堆区,对象是保存在堆区的
1, 主要是管理内存的创建和释放
在iOS中堆内存的创建,释放就叫内存管理
2,内存管理方式:
MRC:手动内存管理
ARC:自动内存管理
引用计数器:是用来记录对象被引用的次数,英文:reference counting
每天对象天生就有一个引用计数器。
TRStudent * stu = 【【TRStudent alloc】init】;
stu就是引用,
引用的次数:一个对象被几个引用使用。
在Xcode5以后,都是强制使用ARC内存管理的,需要手动改成MRC
项目名——Build Settings ——ALL——搜索ARC——Apple LLVM5.1 language Objective 改为no
强制操作系统回收内存:
——————(僵尸对象)也要每次都点————
左上角文件名的停止按钮后的按钮 - exit Scheme - Diagnostics - Enable Zombie Objects
内存管理的机制:
每个对象都有自己的引用计数器,在MRC下引用计数器自己是不能自动操作的。就是多个引用对象不能自动加一,要手动加一
向对象发送【对象 retainCount】消息就可以查看引用计数器的值
当向对象发送alloc、copy、new、消息的时候,该对象的引用计数器会自动设置为一。
当不再使用的时候会发送release消息,通知引用计数器“减一”
当一个引用计数器的值为0的时候,:系统“会自动销毁该对象,并回收该内存空间。
当对象销毁的时候会自动发送dealloc消息。
new相当与相当于想这个对象发送一个alloc消息 TRStudent new = = TRStudent alloc init
内存管理使用不当会出现问题:
通过引用使用一个已经不存在的对象(堆空间),会出现异常crash(exception)。
解决野指针问题:使用空指针来解决野指针问题
对象不在使用的时候,忘记放松release消息,内存泄露、造成浪费
解决野指针问题:1,谁创建的内存谁加1,谁就有责任减一
重写系统的方法不写声明也可以,继承问题
- M牛C原创博客——oc当中的手动内存管理知识要点
- M牛C原创博客——oc当中的属性问题
- M牛C原创博客——补充:OC开发中自动内存管理介绍
- M牛C原创博客——oc和c的区别
- M牛C原创博客——oc面向对象的三大特性
- M牛C原创博客——oc开发基础——C语言知识点01
- M牛C原创博客——oc 组合、聚合、协议、分类、拓展、
- M牛C原创博客——IOS开发中的MRC内存管理中七大知识点
- M牛C原创博客——oc中设计模式之——单例模式
- 【OC中的内存管理知识】
- M牛C原创博客——IOS开发必备技能——安装离线xcode的api
- OC的手动内存管理
- C#的内存管理知识
- Objective-C内存管理知识总结
- Objective-C内存管理知识总结
- Objective-C内存管理知识总结
- 黑马程序员——OC基础---手动内存管理
- OC语法基础(6)—手动内存管理
- hadoop-2.4.0源码编译过程
- 妖哲开始搞前端4——激凸!Firefox插件
- 解决VS2003查询卡死的问题
- Java字符串处理
- 用scp这个命令来通过ssh传输文件
- M牛C原创博客——oc当中的手动内存管理知识要点
- 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记22 多MVC模式Demo中的AutoLayout自动布局
- Android性能优化(0) ——综述
- VirtualBox 断网最小安装Debian 7
- imagenet 数据准备
- metasploit - [post/windows/manage/payload_inject] and [multi_meter_inject]
- emacs 下配置python自动补全编辑器
- 利用objc runtime 和 KVC 对自定义对象归档解档
- 解决 A cycle was detected in the build path of project 问题