crash

作者: 不拘小节123456 | 来源:发表于2016-05-12 08:17 被阅读62次

    我们团队做了个小的科研型项目,用来保护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讲与之关联的依赖控件或手势、通知移除。

    相关文章

      网友评论

          本文标题:crash

          本文链接:https://www.haomeiwen.com/subject/zpnurttx.html