野指针----内存回收本子----僵尸对象

 1.野指针:

    C语言中的野指针:定义1个指针变量,没有初始化,这个指针变量的值是一个垃圾值,指向一个块随机的空间,这个指针就叫做野指针

    OC 中野指针:就是指针指向的对象,已经被回收了,这样的指针叫做野指针。

 

 

 2.内存回收的本质:申请一个变量,实际上就是想系统请制定的字节数的空间,这些空间系统就不会再分配给别人了,

        当变量被回收的时候,代表变量中用的字节空间从此以后,系统可以分配给别人使用了,但是字节空间中存储的数据还在

 

 回收对象:所谓的对象的回收,指的是对象占用的空间可以分配给别人,当这个对象占用的空间没有分配给别人之前,其实对象数据还在,

 

 3.僵尸对象:一个已经被释放的对象,但是这个对象所占的空间,还没分配给别人,这样的对象就是僵尸对象。(我们通过野指针去访问僵尸对象的时候,有可能没问题,也有可能有问题)

 

    当僵尸对象所占用的空间还没有分配给别人的时候,还是可以的

    当僵尸对象真用的空间已经分配给别人使用的时候,就不可以了

这个时候p1 就是僵尸对象

 4.我们认为,只要对象成为将是对象的时候,无论如何,都不用需访问的。

    所以我们希望如果访问的是僵尸对象,无论如果报错,----将是对象的实时检查机制,可以将这个机制打开,打开之后,只要访问的是僵尸对象,无论空间怎么分配,都报错

如何打开对僵尸对象的检测


 5,为什么不默认打开将是对象检测。

    一旦打开僵尸对象检测,那么在每访问一个对象的时候,都会先检测这个对象是否为一个僵尸对象,这样是极其消耗性能

 6.使用野指针访问僵尸对象会报错,如何避免僵尸对象错误。

    当一个值真为野指针以后,讲这个指针设置为nil

    当一个指针的值为nil,通过这个指针去调用对象的方法(包括使用点语法)的时候,不会报错,只是没有任何反应。但是如果通过直接访问属性->就会报错


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值