自己动手打造基于 WKWebView 的混合开发框架(二)——js 向 Native 一句话传值并反射出 Swift 对象执行指定函数

2015-9-2 / 阅读数:39757 / 分类: iOS & Swift

本篇文章中,我将跟大家一起学习使用 WKWebView 屌炸天的新传值方式,实现从 Javascript 层向 Native 层的传值,并反射出我们想要的对方,执行我们想要的方法。

Javascript 层和 Native 层的定义

基本定义

Javascript 层此处指网页中的 js runtime,就是所有 js 运行的地方,我们将其看做一层 js 虚拟机。而此处的 Native 层指的是 Swift 或者 OC 代码运行的那层,严格意义上来讲,这一层并没有运行时(runtime),他们都是编译型语言,在硬件设备上运行时,用的都是二进制形式,所有变量的字符串名称亦不再存在,只有指针。

苹果的 runtime 技术

为了避免上文中编译型语言的缺点,苹果构造甚至直接开放了 runtime,不仅在编译的时候存储了 名称(类,函数,变量)<=>指针 对应表,还把这些底层 runtime 接口开放给所有开发者使用。以我对 OC 浅薄的了解,似乎 OC 底层的面向对象的实现就是直接用的 runtime。

有了 名称<=>指针 对应表,我们就可以胡作非为啦 HIAHIA~

屌炸天的一句话传值

苹果在 WKWebView 中的 js runtime 里事先注入了一个 window.webkit.messageHandlers.OOXX.postMessage() 方法&#

吕文翰 php,自己动手打造基于 WKWebView 的混合开发框架(二)——js 向 Native 一句话传值并反射出 Swift 对象执行指定函数...相关推荐

  1. 吕文翰 php,自己动手写一个 iOS 网络请求库(三)——降低耦合

    自己动手写一个 iOS 网络请求库(三)--降低耦合 2015-5-22 / 阅读数:16112 / 分类: iOS & Swift 本文中,我们将一起降低之前代码的耦合度,并使用适配器模式实 ...

  2. iOS 拓展,icon,尺寸 开发系列 吕文翰

    iOS开发拓展篇-应用之间的跳转和数据传递 iOS和安卓APP启动图标的尺寸和圆角大小详解 iOS和安卓手机的APP图标尺寸规范和图标命名规范 – 25学堂 good iOS 设置App图标Icon. ...

  3. 怎么用文本文档写html框架,基于Metronic的Bootstrap开发框架经验总结(17)-- 使用 summernote插件实现HTML文档的编辑和图片插入操作...

    在很多场合,我们需要在线编辑HTML内容,然后在页面上或者其他终端上(如小程序.APP应用等)显示,编辑HTML内容的插件有很多,本篇介绍基于Bootstrap的 summernote插件实现HTML ...

  4. 基于Qt大恒工业相机二次开发demo-C++

    目录 1.新建工程 2.文件及属性配置 2.1文件拷贝 2.2VS项目属性配置 2.2.1包含目录和库目录添加 2.2.2附加依赖项添加 3.添加基于官方mfc代码改写的CGXBitmap类 3.1添 ...

  5. 群晖nas介绍文档_群晖 NAS 选购 入门指南:动手打造自己的家庭数据中心

    原标题:群晖 NAS 选购 & 入门指南:动手打造自己的家庭数据中心 Matrix 精选 Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考.我们会不定期挑选 ...

  6. 一起动手打造个人娱乐级linux

    我们使用电脑,一直以来用的都是windows,但是对于像我这种爱折腾的人来说,尝试使用linux系统应该是一种不错的体验.说到linux,许多人可能都没听过,或者知道的人对它印象是这样的: 然而,li ...

  7. 7 centos 查看程序文件数量_「动手打造家庭媒体网络平台」安装篇-centos搭建DLNA媒体服务...

    大家好,我是路程lucky,热爱开发.设计.学习.生活.爱捣鼓的web前后端工程师~ 本文的重点是在之前文章提到创建的centos基础上继续搭建DLNA媒体服务.由于centos的系统是从零开始初步安 ...

  8. 深入浅出PE文件格式---自己动手打造PE Show

    深入浅出PE文件格式---自己动手打造PE Show                                                             作者:WiNrOOt // ...

  9. (转)如何动手打造属于自己的智能家居

    转自:http://www.cocoachina.com/programmer/20140629/8974.html 2014-06-29 14:11 编辑: suiling 分类:程序人生 来源:C ...

最新文章

  1. php剪切文件,C/C++文件剪切复制删除
  2. day21-python模块
  3. activiti脚本任务_Activiti中的高级脚本:自定义配置注入
  4. linux 删除N天文件
  5. SpringBoot学习之文件结构和配置文件
  6. docker-rabbitmq
  7. 前端实战|React18项目启动——pc端极客园项目前置准备
  8. iis打不开php,php出现404找不到网页错误 iis配置问题解决
  9. 原生Js汉语拼音首字母匹配城市名/自动提示列表
  10. 黑盒测试中的因果图约束条件解释
  11. STM32G0 硬件SPI+DMA+LL库,最高通讯速率32MBit/s
  12. hmailserver搭建一个公网可收发的自用邮局
  13. Retrofit详解(一)(Retrofit创建过程)
  14. 【亚稳态、建立时间和保持时间】亚稳态的产生原因、危害及解决方法
  15. laravel php配置,配置 - Configuration
  16. 我的五大开仓点与五大平仓点 开仓点
  17. VS2019怎么没有C++的窗体应用模板_衡州销售支架z型钢价格-怎么样_浙江铭凯
  18. 电脑重启出现蓝屏提示“beginning dump of physical memory”解决方法
  19. 中国科学院邮件系统服务器信息,中国科学院邮件系统帮助中心
  20. 消息队列的pull与push模式理解

热门文章

  1. XMUOJ·纸片选择
  2. vim命令set nu
  3. 局域网bs虚拟服务器怎么创建,搭建局域网地图服务器
  4. 【Mac 教程系列第 10 篇】如何在 Mac 上破解带有密码的 ZIP 压缩文件
  5. 【机器学习】为什么机器学习难于应用
  6. 7.27 web前端-淘宝首页设计3
  7. 喜迎国庆中秋,双节快乐!
  8. 适合所有手环的app_一只手环就能指导运动?Keep 想做你手腕上的魔鬼教练
  9. d作者d语言中组件式编程
  10. 2021网易秋招笔试题(Android开发)