JS怎么样调用IOS并且传递参数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS怎么样调用IOS并且传递参数?相关的知识,希望对你有一定的参考价值。
值传递仅仅传递的是值引用传递,传递的是内存地址,修改后会改变内存地址对应储存的值。
用数组来举例就最清楚了,例如我们定义一个数组a[]=1,2;
那么a[0]=1,a[1]=2。
如果我们把数组a里的元素值作为参数传递,实际上只是进行了值传递,对数组本身没有影响
如果我们把 数组a的指针作为参数传递,那么假如处理的函数就可以直接修改数组a里的值。
代码实例:(只是写个大概的逻辑,语法可能有错误)
main()
int a[]=1,2;
test(a);
printf(a[0]); //此处打印的值是3, 这就是引用传递。
public void test(int b[])
b[0]=3;
参考技术A 可以看下javascriptcore框架的文档,这个框架让Objective-C和JavaScript代码直接交互变得非常简单方便。如果是Cordova,可以通过写扩展的方式。如果是WebKit,可以通过Cocoa的API。
iOS -OC调用js页面
我们这边和h5商量好传递一个结构体参数过去,然后由于解析的问题,导致我这里传递的参数,到h5那边不执行那边的方法
-(void)loginCallBack
{
NSDictionary *dic;
user = [IBKeychain loadValueForKey:kUserKey];
if (user) {
dic= @{
@"id":[user objectForKey:@"userId"],
@"token":[user objectForKey:@"access_token"],
@"appTag":@"IOS"
};
}else{
dic= @{
// @"id":@"",
@"token":@"",
@"appTag":@"IOS"
};
}
NSData *jsonData = [NSJSONSerialization
dataWithJSONObject:dic options:0
error:nil];
NSString *result = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSString *jsStr = [NSString stringWithFormat:@"appLoginCallBack(‘%@‘);",result];
[self.webView stringByEvaluatingJavaScriptFromString:jsStr];
// return;
}
然后这样就可以调用方法了
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[self hideLoadingView];
[self loginCallBack];
}
以上是关于JS怎么样调用IOS并且传递参数?的主要内容,如果未能解决你的问题,请参考以下文章