iOS与JS交互实战篇(Swift/ObjC)
来源:互联网 发布:网络在线打电话 编辑:程序博客网 时间:2024/05/29 10:01
前言
ObjectiveC与Js交互是常见的需求,可对于新手或者所谓的高手而言,其实并不是那么简单明了。这里只介绍iOS7.0后出来的JavaScriptCore framework。
关于JavaScriptCore
本教程中所涉及到的几种类型:
- JSContext, JSContext是代表JS的执行环境,通过-evaluateScript:方法就可以执行一JS代码
- JSValue, JSValue封装了JS与ObjC中的对应的类型,以及调用JS的API等
- JSExport, JSExport是一个协议,遵守此协议,就可以定义我们自己的协议,在协议中声明的API都会在JS中暴露出来,才能调用
ObjC与JS交互方式
通过JSContext,我们有两种调用JS代码的方法:
- 1、直接调用JS代码
- 2、在ObjC中通过JSContext**注入模型**,然后调用模型的方法
直接调用JS代码
// 一个JSContext对象,就类似于Js中的window, // 只需要创建一次即可。 self.jsContext = [[JSContext alloc] init]; // jscontext可以直接执行JS代码。 [self.jsContext evaluateScript:@"var num = 10"]; [self.jsContext evaluateScript:@"var squareFunc = function(value) { return value * 2 }"]; // 计算正方形的面积 JSValue *square = [self.jsContext evaluateScript:@"squareFunc(num)"]; // 也可以通过下标的方式获取到方法 JSValue *squareFunc = self.jsContext[@"squareFunc"]; JSValue *value = [squareFunc callWithArguments:@[@"20"]]; NSLog(@"%@", square.toNumber); NSLog(@"%@", value.toNumber);
这种方式是没有注入模型到JS中的。这种方式使用起来不太合适,通常在JS中有很多全局的函数,为了防止名字重名,使用模型的方式是最好不过了。通过我们协商好的模型名称,在JS中直接通过模型来调用我们在ObjC中所定义的模型所公开的API。
此处省略10000字…
本文内容较多,要完整阅读文章内容,请移步微信公众号文章:iOS与JS交互实战篇(ObjC版)
如果您正在学习Swift或者正在使用Swift开发,可以阅读Swift版的文章:Swift与JS交互实战篇
公众号搜索「iOS开发技术分享」快速关注,微信号:iOSDevShares
QQ群:324400294
0 0
- iOS与JS交互实战篇(Swift/ObjC)
- iOS与JS交互实战篇(ObjC版)
- iOS与JS交互实战篇(ObjC版)
- iOS与JS交互实战篇(ObjC版)
- iOS与JS交互实战篇(ObjC版)
- iOS与JS交互实战篇(ObjC版)
- iOS与JS交互实战篇(ObjC版)
- iOS与JS交互Demo文档(ObjC版)
- iOS与JS交互实战篇
- iOS与js交互实战篇(oc版)
- ios WKWebView 与 JS 交互实战技巧
- Swift与JS交互
- Swift与JavaScript交互实战
- swift 与JS交互( JS调用swift方法)
- iOS开发 - Swift使用JavaScriptCore与JS交互
- ios webView与js交互与类似回调的实现(swift)
- iOS下Hybird实现---OC与JS交互以及swift与JS交互
- swift与objc混编
- 分享:Android清除本地数据缓存代码
- ApplicationContext和BeanFactory的不同之处
- Xcode 7 添加新设备
- 【数据结构与算法】——基数排序
- Maven管理java工程
- iOS与JS交互实战篇(Swift/ObjC)
- SQL截取字符串
- 类超市管理系统后台第一次bug修改
- 自己用jQuery写一个瀑布流
- 搭建Maven开发环境
- sql 多行转多列,多行转一列合并数据,列转行
- MySQL EXPLAIN 实践汇总
- 开个人博客啦!!!
- 使用AD9361实现FM调频接收机接受广播