[JSPatch使用]OC转JS问题列表

最近开始用JSPatch修复线上的bug,但是使用过程中(其实主要是指OC代码转换成JS代码的过程中)遇到了一些问题,特此记录下来作为自己的备忘录,同时也希望能帮助一些人。

转换问题列表:

序号问题处理方法(JS代码)原因
1NSMakeRange(16,1);{location: 16, length: 1}NSMakeRange是构造结构体的内联方法,JSPatch不支持,推荐使用固定的结构体定义方法
2[button setTitle:@”确定” forState:UIControlStateNormal];button().setTitle_forState(“确定”, 0);UIControlStateNormal是系统常量,JSPatch不支持,推荐直接使用常量的值
3__weak typeof(self) weakSelf = self;var weakSelf = __weak(self);typeof()函数JSPatch不支持,JSPatchConvertor会报错Syntax Error,推荐直接使用self的类型;另外__weak修饰符JSPatchConvertor无法转换,需要在转换后收到添加;
4NSString *webURL = [SWLUtil redirectURL:SWL_Test_URL];var webURL = SWLUtil.redirectURL(“http://www.test.com“);SWL_Test_URL为字符串宏,而JSPatch不支持宏定义,所以需要直接使用字符串值;
5NSString *testURL = [baseURL stringByAppendingString:@”/api/test”];var testURL = “http://www.test.com/api/test“;baseURL的值为”http://www.test.com“字符串,而JSPatch运行时,无法转自动转换成字符串对象,所以简单的办法是直接放拼接好的字符串;如果实在无法处理,就要用NSString的类方法去显式地创建字符串对象
6NSArray *array = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:[NSURL URLWithString:webURL]];
for (NSHTTPCookie *cookie in array){
[[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
}
for (var index = 0; index < array.count(); index++) {
var cookie = array.objectAtIndex(index);
cookieStorage.deleteCookie(cookie);
}
使用forin语法时,自动转换出来的JS代码无法识别出cookie对象,改成for语法后运行正确。
7[SWLTest testWithBlock:^{
[self output];
}];
var jsSelf = self;SWLTest.testWithBlock(block(function(){jsSelf.output();}));即便是不考虑block中直接使用导致的循环引用问题,JS代码中也不能直接使用self;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值