今天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,这就是代码质量以及经验的问题了
如果还有请提醒我~
僵尸对象 野指针
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...