程序崩溃-防止第三方库-VDM
为什么80%的码农都做不了架构师?>>>
防止了哪下崩溃: 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函数导致的cras h 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讲与之关联的依赖控件或手势、通知移除
示例工程使用说明:
1、在程序启动时调用
[[VSDependencyManager shareInstance] start]
示例crash点:
scrol下移除customview后,button点击、scrollview滚动、tap页面空白处
table下移除customview后,tableview滚动、点击、点击noti按钮发送通知
picker下移除customview后,pickerview滚动、点击、点击kvo改变value值,多次移除kvo的观察者
customview开启延时函数,并强制释放后,延时函数执行
customview开启定时任务,并强制释放后,定时任务执行
2、用户加入自己操作防止crash VDMTest-Prefix.pch文件下 加入
define USER_DEPENDENCY_SELF @"USER_DEPENDENCY_SELF"
注释该行即可撤销用户自己操作
3、当程序不使用dependency管理工具,用户自己也不进行依赖解除,crash点都会崩溃 当程序使用dependency管理工作或者用户自行解除依赖,以上crash点均不会crash 所以用户在自行处理的情况下依然可以使用dependency管理工作,操作不会有任何影响
其他工程嵌入:(dependency工具包支持arc和非arc模式,不需要工程配置)
将VDM文件夹直接拖到新的工程中,复制并加入工程
引入头文件
import "VSDependencyCommon.h"
到APPDelegate.m文件
程序启动时,启动dependency单例
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. [[VSDependencyManager shareInstance] start]; return YES;; }
使用方法 就是 加入头文件 就OK了
转载于:https://my.oschina.net/rainwz/blog/493446
程序崩溃-防止第三方库-VDM相关推荐
- Python_note8 程序设计方法学+Python第三方库安装+os库
实例13 体育竞技分析 自顶向下,解决复杂问题的有效方法,将一个小问题表达为若干小问题组成的形式,使用同样方法进一步解决小问题直至可以用计算机简单解决:自底向上 理解自顶向下的设计思维:分而治之:理解 ...
- 微信小程序可用的第三方库
1.wxDraw 轻量的小程序canvas动画库,专门用于处理小程序上canvas 的图形创建.图形动画,以及交互问题. 链接:http://project.ueflat.xyz/#/ 2.ZanUi ...
- python批量安装第三方库_使用Python批量安装第三方库
Python的很多功能通过第三方库实现,99%的第三方库可以通过Python自带的pip方法进行自动下载和安装.然而Python有几十万个第三方库,最常用的也有几十个.想要一次性地安装几十个常用的第三 ...
- python第三方库批量安装_使用Python批量安装第三方库
Python的很多功能通过第三方库实现,99%的第三方库可以通过Python自带的pip方法进行自动下载和安装.然而Python有几十万个第三方库,最常用的也有几十个.想要一次性地安装几十个常用的第三 ...
- 脚本程序转变为可执行程序的第三方库——pyinstaller
**PyInstaller**是一个十分神奇的第三方库,它能够在Windows.Linux. Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没 ...
- mac用什么写python程序_mac下的应用程序发布 及 打包(Python写的脚本,可打包第三方库)...
其实这个问题在网上能搜到大把的解决方案.大家的统一答案都是 otool -L yourapp.app/Contents/MacOS/yourapp 根据输出信息在运行 install_name_too ...
- (转)CocoaPods:管理Objective-c 程序中各种第三方开源库关联
在我们的iOS程序中,经常会用到多个第三方的开源库,通常做法是去下载最新版本的开源库,然后拖拽到工程中. 但是,第三方开源库的数量一旦比较多,版本的管理就非常的麻烦.有没有什么办法可以简化对第三方库的 ...
- java 把string转为keyevent_盘点现在Java强大第三方库(字符串操作),程序员都该知道!...
1.字符串与集合间的转化 引用第三方库 Apache Commons Lang jre连接 值得一提的自JDK1.8以后字符串集合转为字符串可以使用String类下的join()方法,但别的数据类型还 ...
- python 快速删除程序_如何快速一次性卸载所有python包(第三方库)呢
很多时候我们都会有一个麻烦事,就是打开pycharm或者VScode等的时候,都有可能因为自己电脑上面安装的第三方模块过多,导致电脑很卡,风扇转速不停地增加,这时候我们就会想去卸载一些不太用得着的第三 ...
最新文章
- 设计模式------工厂方法模式
- 批量启动关闭MS SQL 2005服务BAT
- 05,pytorch_手写数字案例
- webpack打包器小结(1)
- 面试中的小知识(网络 以及 测试)
- js获取html5 audio 音频时长方法
- 在线安装Eclipse插件时,出现错误
- 发那可g10_fanuc系统中的G10格式会根据输入的数据不同而不同
- 《恋爱通告》8月12上映 海报预告片齐亮相
- wifi物理地址怎么改_怎么修改手机的物理地址
- 基于K-Means的银行客户数据集分析与处理
- linux之mysql基础
- 正则表达式 取最后一个 . 然后进行匹配
- 微信小程序上传图片 预览 删除
- 史玉柱的团队管理之道
- RTFNet——用于城市场景语义分割的RGB和热红外融合网络
- android.view.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating
- 前端标注工具标你妹啊与马克鳗小对比
- python网页查询然后返回结果_python(30) 获取网页返回的状态码,状态码对应问题查询...
- 干眼症产品的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告