zoukankan      html  css  js  c++  java
  • iOS 怎么在一个函数执行完毕得到某个参数值后再去执行他下边的代码

    最近项目中牵扯OC与H5交互, 其中有一个问题是H5加载相册的照片,方法大体是: 和后台制定好协议, 在请求中拦截这个协议, 之后传递一个相对地址给H5来加载本地图片.

    交互时, H5调用OC注册的方法, 回调OC传递过来的照片的相对地址以便加载手机照片. 这里出现问题了, 要做到H5同步加载手机的图片,并不容易, 因为调用OC注册的方法时, 就要接着返回图片的相对地址, 来不及等用户操作, 就要返回地址. 所以要想办法执行完用户的操作, 得到相对路径之后再传递给H5, 这里就要先执行完用户的选取照片或拍摄照片的程序,拿到路径之后再去执行回调函数.

    解决方法:

     1  [_bridge registerHandler:@"addImage" handler:^(id data, WVJBResponseCallback responseCallback) {
     2         
     3         dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
     4         _groupH5 = dispatch_group_create();
     5         
     6         dispatch_sync(queue,^{
     7 
     8             //保证线程顺序, 成功或失败都要离开group, dispatch_group_leave(_groupH5)
     9             dispatch_group_enter(_groupH5);
    10             
    11             // 加载照片
    12             [self addImage];
    13         });
    14 
    15         //汇总
    16         dispatch_group_notify(_groupH5, queue, ^{
    17             
    18             // 汇总结果, 这里再往H5传递地址参数时就不为空了
    19             responseCallback(_imageSource);
    20         });
    21     }];

    代码如上所示, 方法就是加到一个组中, 进入组 dispatch_group_enter(_group), 执行完后(成功或失败都要离开)groupdispatch_group_leave(_group).

    注意不要用异步, 经过测试, 异步调用相册的提示框时有10秒左右的延时!

  • 相关阅读:
    网络爬虫之框架(Scrapy)
    模拟投币试验
    [LeetCode#177]Nth Highest Salary
    Windows Server 2008 各版本功能差异与比较各版本概观--转载
    Win2008 R2下Server Core常用命令小结
    powershell 中用Sqlps管理我台sqlserver 2008r2
    初识 Markdown
    React 入门(3): 严格模式 ReactDOM
    ES6 类的正确定义方式 公有类字段 getter / setter
    Lodash 去抖动 节流
  • 原文地址:https://www.cnblogs.com/loveDodream-zzt/p/6419853.html
Copyright © 2011-2022 走看看