type
status
date
slug
summary
tags
category
icon
password
1、unrecognized selector,swift 中尽可能少用 Selector(str: “”) 方法,OC 中对消息转发三个方法中的一个进行交换实现
2、KVO,切面搞一个 manager,交换 addObserver 去做记录,交换 removeObserver 去从记录里取值做空判断,另外无法交互deinit,可以写一个协议,让该类在deinit时实现协议方法,在addObserver时做断言,是否遵守了协议,没遵守debug模式下蹦,release模式不管,协议在deinit时记得调用就好
3、NotificationCenter,交换 addObserver 和 dealloc(deinit参考kvo),addObserver 时加入HashTable,dealloc 时取出,iOS 9 之后不防护也可以
4、Timer,Timer 的 block 方法不需要防护,target 方法可以搞一个target类,进消息转发,或者NSProxy
5、数组,在 OC 中可以交换添加移除和访问的方法做非空判断,Swift 中要写一个自己的 subscript safe 方法,调用自己的 safe 方法访问
6、String,和集合的方法类似
7、野指针,bugly
8、UI not on Main Thread Crash (非主线程刷UI(机制待改善)),就是把 ui 事件放主线程上
9、递归错误,一般也到不了线上。。
- 作者:NotionNext
- 链接:https://tangly1024.com/article/Crash%E9%98%B2%E6%8A%A4
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章