前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >内存管理--35:僵尸对象(Zombie Object)

内存管理--35:僵尸对象(Zombie Object)

作者头像
xy_ss
发布2023-11-22 08:28:41
2510
发布2023-11-22 08:28:41
举报
文章被收录于专栏:浮躁的喧嚣

僵尸对象

  • 已经被销毁的对象,我们就称这个对象为“僵尸对象”

野指针

  • 当一个指针指向一个僵尸对象,我们就称为这个指针为野指针
  • 只要给一个野指针发送消息就会报错

空指针

  • 没有指向存储空间的指针(里面存的是nil,也就是0)
  • 为了避免给野指针发送消息会报错,一般情况,当一个对象被释放后我们就会将这个对象的指针置为空指针 注:在OC中,给空指针发送消息是不会报错的

用“僵尸对象”调试内存管理问题

  • 程序若有内存问题就会导致程序偶尔崩溃,这是为什么? 其问题的根本原因取决于对象所占的内存有没有被其他内容所覆写,而这块内存有没有移作他用,又无法确定,所以导致程序偶尔崩溃。
  • “僵尸对象”调试内存管理问题最佳方式 iOS中,提供了僵尸对象(zombie)调试功能,开启这项调试功能,如果出现内存管理问题,运行期系统会把所有已经回收的问题实例对象转化为特殊的“僵尸对象”,而不会真正回收它们,僵尸对象收到消息后,会抛出异常,能够准确描述发来的消息与回收之前的对象。
  • 开启调试的方式:

在Xcode编辑器设置僵尸对象

  • 举个例子
    • 未开启“僵尸对象”调试

    未开启“僵尸对象”调试

    • 开启“僵尸对象”调试(会多一句提示信息)

    开启“僵尸对象”调试

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 僵尸对象
  • 野指针
    • 空指针
      • 用“僵尸对象”调试内存管理问题
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档