本文贴出项目中热修复的代码片段:

  1. require('UIView, JPObject, HtmlAllViewController,DataManager,EMClient,EaseMessageViewController')
  2. defineClass("GHAcceptOrderViewController", {
  3. tableView_willSelectRowAtIndexPath: function(tableView, indexPath) {
  4. var row = indexPath.row();
  5. var dataArr = self.sourceArr().toJS();
  6. var vo = dataArr[row];
  7. if (vo.type() == && vo.status() == ) {
  8. return null;
  9. }
  10. return indexPath;
  11. },
  12. })
  13. defineClass("HomePageViewController", {
  14. clickIndex: function(index) {
  15. var data = self.valueForKey("homeVO");
  16. var dataArr = data.banners().toJS();
  17.  
  18. if (dataArr&&dataArr.length>index) {
  19. var vo = dataArr[index];
  20. if (vo.type()) {
  21. if (vo.type() == ) {
  22.  
  23. self.recharge();
  24. }
  25. }
  26. if(vo.linkUrl()&&vo.linkUrl().length()>){
  27.  
  28. var ctrl = HtmlAllViewController.alloc().init();
  29. var token = DataManager.getInstance().user().token();
  30. var header = vo.linkUrl().toJS() + "?token=" + token.toJS();
  31.  
  32. ctrl.setValue_forKey(header,"mUrl");
  33. ctrl.setValue_forKey(vo.name(),"mTitle");
  34. self.navigationController().pushViewController_animated(ctrl,true);
  35. }
  36. }
  37. },
  38. onFloatImage: function(tap) {
  39. var vo = DataManager.getInstance().user();
  40. self.view().setUserInteractionEnabled(false);
  41.  
  42. var weakSelf = __weak(self);
  43. var success = block(function(){
  44.  
  45. weakSelf.view().setUserInteractionEnabled(true);
  46.  
  47. var ctrl = EaseMessageViewController.alloc().initWithConversationChatter_conversationType("pinjian001",);
  48. var dict = require("NSMutableDictionary").alloc().init();
  49. dict.setObject_forKey("我", "senderName");
  50. if(vo.avatar()){
  51. dict.setObject_forKey(vo.avatar(), "senderAvatar");
  52. }else{
  53. dict.setObject_forKey("order_expert_desc_icon_bgImage.png", "senderAvatar");
  54. }
  55. dict.setObject_forKey("品简客服", "receiverName");
  56. dict.setObject_forKey("doctor_defalt_icon.png", "receiverAvatar");
  57.  
  58. ctrl.setValue_forKey("咨询医生","title");
  59. ctrl.setValue_forKey(dict,"pinjian");
  60.  
  61. weakSelf.navigationController().pushViewController_animated(ctrl,true);
  62. });
  63.  
  64. var failure = block("EMError *", function(aError){
  65. weakSelf.view().setUserInteractionEnabled(true);
  66. });
  67.  
  68. EMClient.sharedClient().asyncLoginWithUsername_password_success_failure(vo.hxUsername(),vo.hxPassword(),success,failure);
  69.  
  70. },
  71. readMessage:function(notification){
  72. self.tabBarItem().setBadgeValue(null);
  73. self.showMessage(false);
  74. },
  75. })

需要特别说明的是:

1.oc里的属性访问在 js 这一定要通过.() 访问;

2.oc里的数据在 js 端调用,一定要通过 .toJS() 转换成 js数据类型;

3.oc里的block 在js 这端,如上方代码所示,特别注意下传参的格式;

4.oc里的block 在js端调用,必须要通过弱引用修饰,然后在block里用weakSelf,上方代码所示:

  1. var weakSelf = __weak(self);

5.用到的头文件一定要require();

建议:先本地setupDevelopment 调试,调试成功后,多次检查无误后,再发布全局。

另外:关于jspatch 断点调试:https://github.com/bang590/JSPatch/wiki/JS-%E6%96%AD%E7%82%B9%E8%B0%83%E8%AF%95

更多了解:

http://www.jianshu.com/p/0cb81bf23d7a

http://blog.cnbang.net/works/2767/

http://www.cnblogs.com/dsxniubility/p/5080875.html

http://jspatch.com/

JSPatch 动态更新,bug修复的更多相关文章

  1. JSPatch – 动态更新iOS APP

    原文:http://blog.cnbang.net/works/2767/ JSPatch是最近业余做的项目,只需在项目中引入极小的引擎,就可以使用JavaScript调用任何Objective-C的 ...

  2. JSPatch动态更新APP

    JSPatch,只需在项目中引入极小的引擎,就可以使用JavaScript调用任何Objective-C的原生接口,获得脚本语言的能力:动态更新APP,替换项目原生代码修复bug. 用途 是否有过这样 ...

  3. IOS App动态更新

    框架 JSPatch WaxPatch react-native   方案对比 目前已经有一些方案可以实现动态打补丁,例如WaxPatch,可以用Lua调用OC方法,相对于WaxPatch,JSPat ...

  4. RHSA-2017:2473-重要: 内核 安全和BUG修复更新(需要重启、存在EXP、本地提权)

    [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 修复命令: 使用root账号登陆She ...

  5. RHSA-2017:2029-中危: openssh 安全和BUG修复更新(存在EXP、代码执行、本地提权)

    [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 修复命令: 使用root账号登陆She ...

  6. RHSA-2017:2930-重要: 内核 安全和BUG修复更新(需要重启、存在EXP、本地提权、代码执行)

    [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 修复命令: 使用root账号登陆She ...

  7. RHSA-2017:2299-中危: NetworkManager 和 libnl3 安全和BUG修复更新(本地提权、代码执行)

    [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 修复命令: 使用root账号登陆She ...

  8. RHSA-2017:1842-重要: 内核 安全和BUG修复更新(需要重启、存在EXP、本地提权、代码执行)

    [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 修复命令: 使用root账号登陆She ...

  9. RHSA-2018:3032-低危: binutils 安全和BUG修复更新

    [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 修复命令: 使用root账号登陆She ...

随机推荐

  1. UESTC_邱老师选妹子(二) 2015 UESTC Training for Dynamic Programming<Problem I>

    I - 邱老师选妹子(二) Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Su ...

  2. python刷取CSDN博文访问量之二

    python刷取CSDN博文访问量之二 作者:vpoet 注:这个系列我只贴代码,代码不注释.有兴趣的自己读读就懂了,纯属娱乐,望管理员抬手      若有转载一定不要注明来源 #coding=utf ...

  3. openstacl compants CLI

    1,OpenStack tenant personality

  4. Eclipse配置Maven开发环境

    前言: 现在Eclipse版本越来越高.高版本的Eclipse甚至已经集成了Maven像是SpringSource的哪个版本.用习惯了Eclipse.在开发中还是不想更换掉自己的IDE.如此一来就又了 ...

  5. serialVersionUID作用

    serialVersionUID适用于Java的序列化机制.简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的.在进行反序列化时,JVM会把传来的字节流中的 ...

  6. ubuntu中文实训手册

    http://people.ubuntu.com/~happyaron/udc-cn/lucid-html/ http://www.apachefriends.org/zh_cn/xampp-linu ...

  7. 不定义JQuery插件,不要说会JQuery[转载]

    http://www.cnblogs.com/xcj26/p/3345556.html 不定义JQuery插件,不要说会JQuery 一:导言 有些WEB开发者,会引用一个JQuery类库,然后在网页 ...

  8. Android应用程序组件Content Provider的共享数据更新通知机制分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6985171 在Android系统中,应用程序组 ...

  9. PHP中的的一个挺好用的函数 array_chunk

  10. AjaxHelper创建的ajax无效,JQuery直接方法post有效,原来是Microsoft.jQuery.Unobtrusive.Ajax错误,NuGet解决

    Get-Package -ListAvailable -Filter Microsoft.JQuery Microsoft.jQuery.Unobtrusive.Ajax –Version 3.2.0