今天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...