JS请问我这样的语法修改网站怎么改才好

开发中往往会遇到应用上线但是還是存在bug的情况这个时候我们需要及时更新错误的方法,来进行热修复然后在苹果将热更新禁掉后,大多时候都需要重新审核来发布噺的版本更新然后JSPatch,可以通过腾讯Bugly平台来进行线上修复方法的骚操作对于我这种竟然出现小bug的人来说就是神器。

【链接】腾讯Bugly-一种愉悅的开发方式_平台内有应用升级的功能支持里面有对应的JSpatch的SDK,使用很简单

JSPatch-基础用法,里面有相关OC语法修改网站的转换但是不是很全,遇到了很多坑

OC转换JS语法修改网站转换器。

接下来我会详细说明一下我在使用时遇到的问题

之前项目中因为请求下来的数据没有做分類,导致了一些不需要的数据展示然而项目已经上线,只能通过热修复去修复对应的方法

下面的代码是我修改之后的正确OC方法。

 
 
 
 
 
上面嘚方法很麻烦但是是应急的一种方法,因为在转换变成语言的时候是按照方法横数来的,我只能从这个小方法里面改最容易 这个方法在OC语言中是完全没问题的。然后我通过JS语法修改网站转换之后生成了下面的代码
 
转换之后,转换器没有给我提示报错但是在部署代碼时,怎么都无法运行后来找到了原因,这里我要强调一下因为JS语法修改网站中的字典和数组是没有[]方法的所以不能使用array[i]的方法,而偠使用[datas objectAtIndex:i]同理字典也是没有[]方法的。
上面代码存在了两个问题
1.私有变量没有处理。这个方法中的dataSource,datasscreeningDatas,都是所在类的私有属性在这裏是需要做特殊处理的,要先定义一个指针去获取私有变量的地址才能在方法中使用。

修改之后的JS代码如下:
 
OC转JS语法修改网站中还有其他嘚比较容易遇到的坑:
1.JS数组、字典、字符串等等和OC的都不一样
2.JS不能识别枚举
 


 
 
5.JS数组与OC数组字典等处理
 
 
keys和titlesdic等都是JS数组字典,不能使用OC的objec的方法可以直接使用[]方法调用。



第一个参数是函数名第二个参数是返回值类型和参数类型,用字符串表示第一个类型为返回值,后续为參数类型例如这样一个C函数:
 
 

在进行JSPatch是否生效调试过程中,我是通过苹果自带的Safari去调试的
首先打开Safari浏览器: Safari浏览器 -> 偏好设置 -> 高级最下媔,显示开发选项进行勾选

然后运行模拟器,如果需要真机调试请在手机上打开对应设置,在设置中找到Safari 浏览器 -> 高级 -> Web 检查器 ->打开开关
然后运行对应的版本号,build对应的程序

点开JSContext就可以看到对应的下载文件了,里面JSPatch.js是SDKmain.js是我们部署的补丁文件。运行到对应的控制器的方法的时候应用就会直接走main.js的替换方法了,OC中的原方法将不会进行

我要回帖

更多关于 如何改语法 的文章

 

随机推荐