僵尸对象 野指针

今天leader给了我好几个bug让我修,都是那种出现率不高的特别诡异的bug,后面几个都是带着EXC_BAD_ACCESS KERN_INVALID_ADDRESS这种log
总结一下,ARC环境下大概有几种情况
1.最常见的 多线程读写问题,一个线程执行读操作时另外一个线程对其写入了,将其修改,对象很有可能就被释放了,导致实际上指向的是个僵尸对象,感觉这是最容易见到的,但也是最不容易找到,找到也不容易修改。一般通过(1)加锁(2)修改业务逻辑,比如把这个对象的处理放在同一个队列(3)放弃 因为很可能改这种东西会产生更大的问题,假如出现几率低的话就不做更改
2.第三方库内的引用。很多第三方库使用很老版本的代码,可能会有这方面的问题,或者干脆就是MRC
3.assign 使用assign修饰对象就会导致这个对象被释放的时候无法被控制,但现代人应该都不会这样写代码了吧= =
4.C。C相关代码内存alloc后是需要手动release,如果release后还对其进行调用自然会引发crash,这就是代码质量以及经验的问题了
如果还有请提醒我~

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Xcode中给当前项目设置监听僵尸对象报的错 Xcode中设置全局断点,可以让程序停留在报错的那行代码 杠杠fun...
    山中石头阅读 354评论 0 0
  • 僵尸对象: 已经被销毁的对象(xcode 中默认不实时检查僵尸对象) 野指针: 指向僵尸对象(不可用的内存)的指针...
    小山93阅读 1,134评论 1 0
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,746评论 25 709
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,219评论 30 472
  • 你在花海徜徉 我在人间彷徨 花海七里暖阳 人间三度风凉
    己挚阅读 182评论 0 0