僵尸对象 野指针

今天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,这就是代码质量以及经验的问题了
如果还有请提醒我~

你可能感兴趣的:(僵尸对象 野指针)