M牛C原创博客——oc当中的手动内存管理知识要点

内存管理:

所在的进程空间——堆区,对象是保存在堆区的

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,谁就有责任减一

重写系统的方法不写声明也可以,继承问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值