OC和JS互调

本文介绍了一个Objective-C与JavaScript互相调用时避免产生强引用的小技巧,通过使用JSContext来传递参数并根据不同的数值跳转到相应的页面。

OC和JS互调 可能造成相互强引用 小技巧

    JSContext *content = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

    content[@"chongzhi"] = ^() {

        

        NSArray *thisArr = [JSContext currentArguments];

        int iValue = 0;

        if(thisArr.count > 0)

        {

            JSValue *value = thisArr.firstObject;

            DebugLog(@"value:%@",value);

            NSString *strValue = [value toString];

            DebugLog(@"strValue:%@",strValue);

            iValue = [strValue intValue];

            DebugLog(@"iValue:%d",iValue);

        }

        

        TopupController *vc = [[TopupController alloc] init];

        switch (iValue) {

            case 20:

                vc.amount = 0;

                break;

            case 50:

                vc.amount = 1;

                break;

            case 100:

                vc.amount = 2;

                break;

            case 200:

                vc.amount = 3;

                break;

            case 500:

                vc.amount = 4;

                break;

            default:

                vc.amount = 0;

                break;

        }

        //            vc.amount = 1;

        NSLog(@"vc.amount:%ld",vc.amount);

        dispatch_async(dispatch_get_main_queue(), ^{

        [self.navigationController pushViewController:vc animated:YES];

        });

 

跳转时在主线程种可以解决

转载于:https://www.cnblogs.com/yulehuayuan/p/6432794.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值