美文网首页
iOS开发日常小记

iOS开发日常小记

作者: 爱打码滴小燕子 | 来源:发表于2017-09-12 16:13 被阅读6次

今天做JS和OC交互,功能是实现点击web页面上的一个按钮,推出本地原生界面,很简单的一个小需求,但还是遇到了两个小坑。

坑1:方法名没对称上

因为不管是JS还是Java,在一个方法里可以一下子传递多个参数,但是OC方法里,如果要传递多个参数,则中间必须有个单词间隔一下。类似:

-(void)configName:(NSString *)name Age:(int)age;

后台一开始给的方法是只有一个参数的goBssGold(参数),但是需求需要有两个,所以我自愿在后面加了一个loanId,
我的方法名就变成了:

- (void)goBssGold:(NSString *)str1 loanId:(NSString *)str2;

但实际上,java和JS那边的方法名还是goBssGold(参数1,参数2),结果可想而知,肯定调用不了咯。
最后改成如下图就可以了。

- (void)goBss:(NSString *)str1 Gold:(NSString *)str2;

嗯,如果还要继续加参数,只能将单词继续拆开了。

补充一下,如果JS调用的方法名是goBssgold(a,b),我们这边定义的是goBss:(int)a gold:(int)b,但是仍然无法调用,系统不认。这可能因为要跟JS交互的关系,带参数的首字母必须大写

坑2:[self showHUD]

第二个坑是在数据请求的时候产生崩溃,崩溃原因是:

invalid mode 'kCFRunLoopCommonModes' provided to CFRunLoopRunSpecific - break on _CFRunLoopError_RunCalledWithInvalidMode to debug. This message will only appear once per execution.

小编表示一下子没看懂,只知道似乎是线程出了问题了。打断点看一下崩在哪里吧
,如下:

崩溃位置.png

现在知道了,线程出问题了,showHUD要求在主线程执行,但是我们从web页跳转过来,不一定在主线程。知道问题就好办了,将GCD将需要在主线程执行的代码放到主线程就可以了。

    dispatch_async(dispatch_get_main_queue(), ^{
        [self showHUD];
    });

相关文章

  • iOS开发日常小记

    今天做JS和OC交互,功能是实现点击web页面上的一个按钮,推出本地原生界面,很简单的一个小需求,但还是遇到了两个...

  • iOS 开发小记-01

    最近又开始写不少业务代码了,有些小知识点小坑,用这个系列记录一下。iOS 开发小记-01iOS 开发小记-02 1...

  • iOS 开发小记-02

    最近又开始写不少业务代码了,有些小知识点小坑,用这个系列记录一下。iOS 开发小记-01iOS 开发小记-02 1...

  • 值得一读

    iOS 开发 Clang Attributes 黑魔法小记 UIApplication的详细介绍 MVVM奇葩说

  • ios开发碎记录

    ios开发碎知识点 前言. 整理好久的了,最近很少开发ios了,再不发估计ios就废了 ?ios日常开发中,有必要...

  • Web版扫雷开发小记(3)

    前篇: web版扫雷开发小记(1)web版扫雷开发小记(2)web版扫雷开发小记(3)web版扫雷开发小记(4) ...

  • Oracle双表关联条件更新

    日常小记

  • IOS开发小记

    1.对服务器进行Https请求 -服务器:获取证书后需提供文件***.pem文件给IOS开发 -IOS开发:将得到...

  • iOS开发小记!

    1:Block 循环引用的问题 宏定义 2: 修改textField的占位符(placeholder)的字体颜色、...

  • iOS开发小记

    这篇文章主要内容是整理了部分iOS开发基础知识和收集了一些iOS开发中的小技巧。由于平时自己没有养成做笔记的习惯,...

网友评论

      本文标题:iOS开发日常小记

      本文链接:https://www.haomeiwen.com/subject/lcwcsxtx.html