工程里接入了JSPatch,这个工具确实好用,然而写js脚本补丁却是一件相当让人痛苦的事情,这……可能是自己不够精通的关系吧。
本文将记录一些本人打补丁过程中遇到的一些大大小小的坑。
1 不要让自己的一个方法处理太多的逻辑,减少某一个方法中代码的行数不止会让自己的代码具有更强的可读性,更会减少你打补丁时的痛苦。
2 能用属性的时候尽量用属性,免得出现一些莫名其妙的障碍
3 在补丁中遇到属性时一律使用 self. 的方式去访问和修改,否则你会很痛苦的
4 NSMutableArray 在补丁中没有 initWithObject 的方法,额,也可能是转换不过去,总之是不可用的,老老实实的先初始化再添加元素吧
5 NSString 在补丁里没有格式化的初始化(各种百分号占位符的那种),所以老老实实的去拼接,假如你在拼接的时候遇到了NSNumber类型的变量,呵呵,自求多福吧
6 遇到 block 的时候比较麻烦,尤其是 block 套用的时候,具体处理方法参照开源文档,这里要说的是,如果你的 block 类型进行过定义处理,把进行定义的类也加入到需要点用的类里面,所有涉及到的定义都要这么处理
7 遇到枚举值,简单点,直接给个数字吧
-----------------------------------------------------------------------------
补上几个新得到的经验
8 所有的宏定义要还原,宏定义的方法要还原成方法逻辑
9 @selector是不能使用的,直接用方法名的字符串就可以,最重要的,该带冒号要带冒号。
10 在进行富文本编辑时,会使用系统的固定字符传做键值来设定属性,这个时候,固定字符串的名称是不能再jspatch的脚本中使用的,在OC中打印一下,把实际值填过去
11 属性值是可以当成私有变量来进行读写的,所以,假如要重写属性的setter或getter方法,在重写的方法内部,用私有变量的读写来进行赋值吧
12 不要使用forin进行快速遍历,这样取出来的对象会有问题,写成完全体吧,for(;;),再用 objectAtIndex() 去得到想要的对象