如何优化增强第三方库?

 

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

    我认为,一般有两种修改的方式: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,也要添加到测试那两个框架,否则会报错。

                  

posted @ 2017-03-08 17:59  行者烧炉子  阅读(189)  评论(0编辑  收藏  举报