iOS 怎么在一个函数执行完毕得到某个参数值后再去执行他下边的代码

Posted loveDoDream_zzt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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         _group = dispatch_group_create();
 5         
 6         dispatch_sync(queue,^{
 7             //保证线程顺序
 8             dispatch_group_enter(_group);
 9             // 加载图片
10             [self addImage];
11         });
12 
13         //汇总
14         dispatch_group_notify(_group, queue, ^{
15             //这里再往H5页面回调, 地址参数_imageSource就有值了
17             responseCallback(_imageSource);
18         });
19     }];

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

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

以上是关于iOS 怎么在一个函数执行完毕得到某个参数值后再去执行他下边的代码的主要内容,如果未能解决你的问题,请参考以下文章

JS问题JQUERY问题如何让一段函数执行完毕后再执行另一段函数

ORACLE 创建的函数 可以返回两个值吗,该怎么做?

io模型

在java一个方法中,如何让一行代码执行完毕以后等待几秒钟后再执行另一行代码 主要 是一个方法中

Android activity等待service数据后再执行

嵌入函数返回值后在函数中调用completionHandler?迅速