美文网首页
JSPatch 初体验 ——各种坑和工具、文章(不定期更新)

JSPatch 初体验 ——各种坑和工具、文章(不定期更新)

作者: vincent涵 | 来源:发表于2016-04-27 16:41 被阅读607次

    前言:前阵子项目刚上线很闲,自己学新东西,突然发现一个很牛的东东——JSPatch, 线上直接改BUG的利器啊(直接用来写模块个人现在还没那技术,而且React native会更好,虽然我不会),虽然一点都不懂JS,但是不需要审核,直接线上改bug的诱惑太大了,果断花两天时间学了下JS大体懂了,然后开始研究JSPatch。


    工具

    首先先把几个很好用的工具和文章贴在下面,工欲善其事必先利其器,有了这几个工具和前人经验文章,保证你少走大量弯路.(强烈推荐使用文章里让打开的js断点调试,非常有用!!!)

    1、JSPatch专用 OC 转化 JS工具(虽然很多并不准确,不过初学者用它比一下一下打方便多了,可以类似用翻译软件翻译英文一样,先翻译再改不对的地方):JSPatchConvertor
    2、JSPatchX —— JSPatch专用Xcode自动补全插件:JSPatchX
    3、JSPatch 基础用法 : JSPatch 基础用法
    4、JSPatch 常见问题 : JSPatch 常见问题
    5、简书上的两篇前辈总结经验:使用JSPatch问题若干及解决方法 iOS开发 — JSPatch


    各种坑

    (虽然都是因为没有认真仔细看JSPatch基础用法导致的,原谅我比较心急,直接就像上手开始用)

    1.私有成员变量不能直接访问,必须用valueForKey 或者 setValue_forKey调用。比如:

    self.valueForKey("_moreModelArray").count(); self.setValue_forKey(NSMutableArray.array(), "_vcArray");

    2.JS数组、字典、字符串等等和OC的都不一样
    详见工具里面的文章,不具体说了,都是泪

    3.JS不能识别枚举,比如:

    _pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:0];
    

    UIPageViewControllerTransitionStylePageCurl和UIPageViewControllerNavigationOrientationHorizontal全部都不能识别啊有木有!!!所以我默默的都直接改成了对应的枚举值

    var pageViewController = UIPageViewController.alloc().initWithTransitionStyle_navigationOrientation_options(0, 0, 0);
    

    4.必须在require里面声明了相关类,才能使用相应方法,一般写在main.js的最上面,比如:

    require('NSMutableArray,NSString,UIPageViewController, NSKeyedUnarchiver, FSProductFirstViewController, FSProductMoreDetailViewController, UIScreen');
    
    1. CGRect也是一个坑,最多的是在设置frame的时候,比如:
      view.frame.origin.x
      在js应该写成:view.frame().x (特别注意不是view.frame().origin().x)
      CGRectMake(20, 20, 100, 100)
      应该写成:{x:20, y:20, width:100, height:100}

    相关文章

      网友评论

          本文标题:JSPatch 初体验 ——各种坑和工具、文章(不定期更新)

          本文链接:https://www.haomeiwen.com/subject/trpcrttx.html