crash

我们团队做了个小的科研型项目,用来保护iOS开发工程中的疏忽引起崩溃的情况。

使用简单,import头文件,在appdelegate中加一句代码即可。

目前只是基本常见情况的处理。希望可以帮助到大家,也希望高手们吐槽指正提出意见。

解决方案放在git上开源了:https://github.com/vipshop/VDM/tree/master

防止崩溃:

1、UIControl依赖的target对象被释放,UIControl继续响应设置给target的selector函数导致的crash

2、UITableView依赖的delegate、datasource对象被释放后,UITableView继续响应delegate和datasource函数导致的crash

3、UIScrollView依赖的delegate的对象被释放后,UIScrollView继续响应delegate函数导致的crash

4、UIPickView依赖的delegate、datasource对象被释放后,UITableView继续响应delegate和datasource函数导致的crash

5、UIGestureRecognizer依赖的target对象被释放后,UIGestureRecognizer继续响应设置给target的selector函数导致的crash

6、NSNotificationCenter向已经被释放的对象发送消息导致的crash

7、KVO的观察者observer被释放后value变化导致的crash

8、已释放对象调用延迟操作导致的crash

9、NSTimer的target对象被释放后,定时任务执行导致的crash

10、添加KVO重复添加观察者或重复移除观察者(KVO注册观察者与移除观察者不匹配)导致的crash

实现原理:

1、创建dependencyManager单例管理依赖工具

2、category系统的有依赖属性的对象,如:UIControl、UIScrollView、UITableView、UIPickerView、UIGestureRecognizer,NSTimer 在这些对象创建依赖时,将依赖关系以key-value的形式保存到我们的dependencyManager的单例中去

3、category IOS中被依赖的对象UIVIew、UIViewController,当被依赖对象释放时,dependencyManager讲与之关联的依赖控件或手势、通知移除。


最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 大白健康系统--iOS APP运行时Crash自动修复系统 前言 大白(Baymax),迪士尼动画《超能陆战队》中...
    鼠犬玉阅读 17,796评论 22赞 158
  • 写在最前面 UITableView是iOS开发最常用的类,用起来很方便,但使用不当也很容易引起Crash,UICo...
    AlexTing杂货店阅读 6,067评论 3赞 6
  • 背景 众所周知,对于移动客户端而言,crash对于用户是一种非常糟糕的体验,crash率对于一款移动应用而言也是一...
    东野浪子阅读 7,635评论 2赞 8
  • 句子:有些人,再怎么等也终究不会等到了,因为他已经得到了自己想要的。名字:穆念慈 梦里面,你与我削竹为萧,拾木为琴...
    狐则阅读 415评论 0赞 0
  • 心理健康,需要付出代价的,而最常见的代价就是----我不再是众人口碑中的好人。 村上春树如是说:不管全世界怎么...
    遇见活在当下的自己阅读 197评论 0赞 0

友情链接更多精彩内容