如何优化增强第三方库?

 

     开发中,我们不可避免要使用,别人花很多时间打磨好的轮子,轮子好用,但有时却无法完全满足我们的要去,这时我们不可避免的要去修改增强一下这个库,如何增强?

    我认为,一般有两种修改的方式:1入侵式修改 2叠加式修改

    1入侵式修改

      如果涉及的地方逻辑较简单清晰,那就直接找到目标处改它,改它的数据,改它的UI。

    2叠加式修改

      如果涉及的地方逻辑较复杂冗长,草蛇灰线,牵一发动全身,那么最好少改原作者的代码,应该根据自己的需求,

      新定义一些数据或UI控件,或新增一些自己的API,视情况而定。

 

 

案例1:修改IQKeyboarManager的完成按钮,将英文Done改成中文

        方式:找到定义该标题的地方,确定它在哪行代码?或者哪个控件的定义处。

        方案1:<1直接搜索Done关键字,但发现搜索出的条目太多,不好找,先不用

        方案2:<1间接搜索其位于同一父控件的上下箭头,发现搜出来的条目只有三个,好!,缩小范围了,

                       确定目标到了某个几文件内

                  <2在那几个文件内,再次搜Done关键字,发现可疑目标控件,就注释,看是否被我消失了

                     旧版本很快找到了,新版本没找到

                  <3然后在一群可疑的doneAction方法内打断点,我点击done按钮,看哪个方法能监听到事件

                     最后定位到一个方法,顺着方法的控件,就找到目标控件了                      

 

案例2:修改一个tag选择控制器

       1一开始使用入侵时修改,但逻辑较复杂冗长,没去仔细看,就改为叠加式修改

案例3:增强MJExtension

      注意点:添加新文件到MJExtension,不仅要添加到该target,也要添加到测试那两个框架,否则会报错。

                  

转载于:https://www.cnblogs.com/dzq1991/p/6520611.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253215.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言变长数组data[0]【总结】

C语言变长数组data[0]【总结】 1、前言 今天在看代码中遇到一个结构中包含char data[0]&#xff0c;第一次见到时感觉很奇怪&#xff0c;数组的长度怎么可以为零呢&#xff1f;于是上网搜索一下这样的用法的目的&#xff0c;发现在linux内核中&#xff0c;结构体中经常用到data…

Excel 转为 MySQL 语句

一、方法 一、假设你的表格有A、B、C三列数据&#xff0c;希望导入到你的数据库中表格table&#xff0c;对应的字段分别是col1、col2、col3 二、在你的表格中增加一列&#xff0c;利用excel的公式自动生成sql语句&#xff0c;具体方法如下&#xff1a; 1、增加一列&#xff08;…

CentOS7下安装zookeeper3.4.9

获取zookeeper官方安装包 1 wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz 解压该文件包 1 tar zxf zookeeper-3.4.9.tar.gz 进入conf文件夹并创建新配置文件 1 cd zookeeper-3.4.9/conf 2 vi zoo.cfg 在config文件中加…

union 和 struct 的区别与联系

union &#xff08; 共用体&#xff09;&#xff1a;构造数据类型,也叫联合体 用途&#xff1a;使几个不同类型的变量共占一段内存(相互覆盖) struct ( 结构体 )&#xff1a;是一种构造类型 用途&#xff1a; 把不同的数据组合成一个整体——自定义数据类型 主要区别&#x…

Android系统中标准Intent的使用

Android系统用于Activity的标准Intent 1.根据联系人ID显示联系人信息 Intent intentnew Intent(); intent.setAction(Intent.ACTION_VIEW);//显示联系人信息 intent.setData(Uri.parse("content://contaccts/people/492")); startActivity(intent); 2.根据联系人ID显…

开关电源简介

1. 基本分类 DC-DC BULK电源 DC-DC BOOST电源 DC-DC BULK/BOOST电源 DC-DC BOOST/BYPASS电源 2. 典型拓扑结构 BULK电路拓扑 降压型电源 串联关系在开关管S导通时&#xff0c;二极管VD负极电压高于正极反偏截止&#xff0c;此时电流经过电感L向电容和负载供电&#x…

Office 2016中Excel的部分快捷方式

【Ctrl下箭头】 拉到最后一行 【Alt 】一秒求和 【CtrlEnter】 一秒输入相同数据 【Ctrld】 一秒竖向填充不连续区域 【Ctrlr】 一秒向右填充数据 【Ctrle】 批量提取字符 【Ctrl1】 调出 设置单元格格式窗口 【Ctrlz】 撤销上一步操作 【Ctrly】 恢复上一步 【F4】 重复上一步…

基于Spring开发的DUBBO服务接口测试

基于Spring开发的DUBBO服务接口测试 知识共享主要内容&#xff1a; 1、 Dubbo相关概念和架构&#xff0c;以及dubbo服务程序开发步骤。 2、 基于Spring开发框架的dubbo服务接口测试相关配置。 3、 spring testjunit和spring testTestNG两种测试框架脚本编写方法。 一、 …

ioctl之FIONREAD

在学习ioctl 时常常跟 read, write 混淆。其实 ioctl 是用来设置硬件控制寄存器&#xff0c;或者读取硬件状态寄存器的数值之类的。 而read,write 是把数据丢入缓冲区&#xff0c;硬件的驱动从缓冲区读取数据一个个发送或者把接收的数据送入缓冲区。 ioctl(keyFd, FIONREAD, &a…

电感基础与选型介绍

电感是一种常见的被动元件&#xff0c;常用在LC振荡电路、中低频的滤波电路&#xff0c;DCDC能量转换电路中&#xff0c;其应用频率一般不超过50MHz。 1.电感的主要作用 通直流&#xff0c;阻交流阻交流变化&#xff0c;保持电流稳定----楞次定律滤波 2.电感的主要分类 3.电…

[题解]Codeforces Round #519 - B. Lost Array

【题目】 B. Lost Array 【描述】 Bajtek有一个数组x[0],x[1],...,x[k-1]但被搞丢了&#xff0c;但他知道另一个n1长的数组a&#xff0c;有a[0]0&#xff0c;对i1,2,...,n。由此可以找到数组x[0],x[1],...,x[k-1]的一些可能情况&#xff0c;即满足这个关系的数组x[0],x[1],...,…

Python正则替换字符串函数re.sub用法示例(1)

本文实例讲述了Python正则替换字符串函数re.sub用法。分享给大家供大家参考&#xff0c;具体如下&#xff1a; python re.sub属于python正则的标准库,主要是的功能是用正则匹配要替换的字符串然后把它替换成自己想要的字符串的方法re.sub 函数进行以正则表达式为基础的替换工作…

LeetCode 24 Swap Nodes in Pairs (交换相邻节点)

题目链接&#xff1a; https://leetcode.com/problems/swap-nodes-in-pairs/?tabDescriptionProblem: 交换相邻的两个节点如上图所示&#xff0c;递归进行交换。从最尾端开始&#xff0c;当最尾端只有一个节点时&#xff0c;停止交换否则执行 swap(head.next) 参考代码&#x…

Netra基于Rdk平台的软件框架设计

Netra&#xff08;DM8168&#xff09;处理器是个多核处理器&#xff0c;每个核之间相互独立却又相互关联&#xff0c;如何高效简洁地利用每个核完成一套系统功能是非常关键的&#xff0c;RDK这套软件平台就是针对这种多核平台设计的一套多通道视频应用方案&#xff0c;主要用于…

电感啸叫原因与应对措施

大部分硬件工程师应该都遇到过,PCBA上电后出现“滋滋滋”的叫声,其声响或大或小,或时有时无,或深沉或刺耳,或变化无常者皆有。该现象我们称为“啸叫”,一般分为电感啸叫和电容啸叫。 其中电感啸叫最为常见,尤其在DCDC电路中,大部分是因为 器件参数选择不合理 导致的。…

ASP.NET Web API 记录请求响应数据到日志的一个方法

原文:ASP.NET Web API 记录请求响应数据到日志的一个方法原文&#xff1a;http://blog.bossma.cn/dotnet/asp-net-web-api-log-request-response/ ASP.NET Web API 记录请求响应数据到日志的一个方法 REST风格的服务架构已经成为越来越多人的选择&#xff0c;之前我用过WCF来实…

Nginx + php

Nginx php 目前有两种方式1.nginx apache nginx 负责静态内容、反向代理和保持连接&#xff0c;apache则负责处理动态内容。 2.nginx fastcgi php-fpm一、nginx apache 采用Nginx前端Apache后端的服务器架构&#xff0c;这样可以很好地结合了Nginx高并发和静态页面高效率以…

Android Fragment完全解析,关于碎片你所需知道的一切

我们都知道&#xff0c;Android上的界面展示都是通过Activity实现的&#xff0c;Activity实在是太常用了&#xff0c;我相信大家都已经非常熟悉了&#xff0c;这里就不再赘述。 但是Activity也有它的局限性&#xff0c;同样的界面在手机上显示可能很好看&#xff0c;在平板上就…

图像--摄像头组成与基本参数

基本组成 Sensor: 图象传感器 FPC: 电路板 IR:红外滤波片 Holder:基座 Lens:镜头 其他 核心部件&#xff1a;1- SENSOR 2- LENS Sensor参数 类别 指标 参考 备注 Sensor 厂家 sony 三星 OV 格科微由原厂提供完整规格书和型号 低像素需要注意 分辨率 0.3MP (VGA)模组…