使用JSPatch一些需要注意的地方
JSPatch提供的OC转JS网址这里 JSPatch一般用法就是,通过转换打好补丁js,第一步通过[JSPatch startEngine]
开启引擎后, 加载[JSPatch evaluateScript:js]
js代码.
那么稍微打补丁不注意会造成崩溃, 以下说说会崩溃的点,以及怎样使用.
1.数组取值
OC代码: SYAPIPostReplyEntity *replyEntity = self.post.info.diarys[indexPath.row]; |
2.字典取值
OC代码: NSString *contentHtml = contentDict[@"html"]; |
4.自定义枚举跟系统枚举
OC代码:
假设已经定义好了这个枚举 >typedef NS_ENUM(NSInteger, SYPostTopicStatus) {
SYPostTopicStatusHtml = 0,
SYPostTopicStatusProduct,
SYPostTopicStatusDiary,
};
JSPatch代码: if (self.status == SYPostTopicStatusHtml) {}
// 通过网站转换过来的>> 以下会造成崩溃的,因为JSPatch解析不了枚举
if (self.status == SYPostTopicStatusHtml) {}
// 下面才是正确的
if (self.status == 0) {}
5.方法带下划线的,JSPatch自己解析方法名有_下划线可以不用管
OC代码: [self.imageView sd_setImageWithURL: placeholderImage:]; |
6.有一点static变量是在打Patch的方法进行初始化的需要注意
OC: |
7.关于方法重写
如果你重写的方法,是之前类不存在的, 是打不上的, 打比方tableView 计算高度的方法你没写, 然后想打JSPatch,返回一定的高度,是打不上的,只能覆盖原有存在方法
8.关于frame
获取一个View的frame.size的时候尽量分割多个变量来取,不要一次性全部取完. like>> self.view().frame().size().height …
9. 关于延时
使用dispatch_after换成 dispatch_after(0.5, function() {}
10. 关于调试Log
JSPatch: console.log(‘Hello iOS’)
小结
打JSPatch多,总归是我们程序员本身写代码质量的问题, 不管是从什么角度来说, 都是细节没注意到位, 我就是个写代码很快缺细节总是不到位的一个人, 缺点很明显, 我要努力去要求自己像处女座一样. 1. 一个方法的代码量尽量不超过100行, 尽可能的越清晰越短, 打Patch也不至于那么麻烦 2. 写代码仔细, 细心, 可以跟同事CodeReview 3. 1,2 做好了, 3点也就没了