ios开发-iOS开发中,如和使等待block执行完毕后再执行下面的代码?

问题描述

iOS开发中,如和使等待block执行完毕后再执行下面的代码?

int a = 0;
void (^requestBlock)(NSDictionary *) = ^(int data){
a = data;//这里假设data = 1,那么a也要 = 1
};
NSLog(a);

这里的a永远是0,在有这段block的前提下,有什么办法让程序同步执行,也就是等待block执行完之后再执行下面的代码?这里只是的例子,我确实有这方面的需要。

解决方案

自己用信号量来同步 block后面wait block函数体中最后设置信号量

解决方案二:

completionhandler + GCD试试 如果闭包写得好就不用后者了 还用一种方式用KVO机制去监视一个值 当它满足一定条件后再执行后续方法

时间: 2025-01-21 03:09:09

ios开发-iOS开发中,如和使等待block执行完毕后再执行下面的代码?的相关文章

class-C#中使用Task类,如何调用完成后继续执行下一个Task?是threadpool么?

问题描述 C#中使用Task类,如何调用完成后继续执行下一个Task?是threadpool么? C#中使用Task类,如何调用完成后继续执行下一个Task?是threadpool么? 解决方案 http://www.cnblogs.com/x-xk/archive/2012/12/11/2804563.html

《C和C++程序员面试秘笈》——1.12 C++中main函数执行完后还执行其他语句吗

1.12 C++中main函数执行完后还执行其他语句吗 C和C++程序员面试秘笈考点: atexit()函数的使用 出现频率: [解析] 很多时候,我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,例如main()函数运行结束,在程序的某个地方用exit()结束程序,用户通过Ctrl+C等操作发信号来终止程序,等等,因此需要有一种与程序退出方式无关的方法来进行程序退出时的必要处理.方法就是用atexit()函数来注册程序正常终止时要被调用的函数. atexit()函数的

C++检查注册表中.net版本号,自动安装.net安装包,然后再执行C#程序

说实在的我的C++功底太浅,希望达人不要笑话 做这篇文章主要是为了解决斯克迪亚的这个问题实现自动判定是否有.Net框架,没有就安装.Net框架! 啥也不说了先来代码吧!代码中注释还算多,如仍有问题请在此文下面的评论中提出 代码 #include <stdio.h>#include <windows.h>#include <iostream> using namespace std; int CheckReg(){ LPSTR regeditStr = "SOF

探讨在JQuery和Js中,如何让ajax执行完后再继续往下执行

查了不少资料,最后,还是jquery指南的书上找到了详细的参数(async: false,),做好后,示例代码放上,如下所示,需要的朋友可以参考下   复制代码 代码如下:   $.ajax        ({             cache: false,             async: false,   // 太关键了,学习了,同步和异步的参数             dataType: 'json', type: 'post',             url: "../hand

实例讲解iOS应用UI开发之基础动画的创建_IOS

一.简单介绍 CAPropertyAnimation的子类 属性解析: fromValue:keyPath相应属性的初始值 toValue:keyPath相应属性的结束值 随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐地变为toValue 如果fillMode=kCAFillModeForwards和removedOnComletion=NO,那么在动画执行完毕后,图层会保持显示动画执行后的状态.但在实质上,图层的属性值还是动画执行前的初

在Oracle 8x中实现自动断开后再连接

    在实际的数据库应用中,我们经常遇到这样一个问题,连接到Oracle数据库的用户在作了一次操作后,再也没有后续操作,但却长时间没有和数据库断开连接.对于一个小型的应用系统来讲,本身的连接数目就有限,这好像没有什么严重的后果,但如果对于一个大型的数据库应用.如税务.工商等,如果数据库的连接数目很多,对于数据库服务器来讲,多一个连接就要多消耗一份资源,如果大量用户连接进入数据库系统但却不进行任何的操作,这无形之中就白白造成了服务器系统资源的浪费,同时造成服务器负载的提高,对于那些确实在工作的用

doinbackground-AsyncTask中怎么让doInBackground执行完再执行onPostExecute方法

问题描述 AsyncTask中怎么让doInBackground执行完再执行onPostExecute方法 各位好,我在做一个手机缓存的扫描,需要在doInBackground()里扫描应用信息,并通过publishProgress()把应用传给onProgressUpdate(),并刷新进度条,并把没有缓存的应用显示出来,最后把有缓存的集合在onPostExecute()方法中置顶显示,可是doInBackground()没执行完,onPostExecute()就执行完了,求解决,代码如下:

java-Java中,finally在try语句块中的return前执行还是后执行

问题描述 Java中,finally在try语句块中的return前执行还是后执行 为什么finally没有改变变量a的值.求大神解答 解决方案 1.不管有木有出现异常,finally块中代码都会执行: 2.当try和catch中有return时,finally仍然会执行: 3.finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行

《iOS 6核心开发手册(第4版)》——1.13节秘诀:从滚动视图中拖动

1.13 秘诀:从滚动视图中拖动 iOS 6核心开发手册(第4版) iOS的丰富的姿势识别器集并不总是能够准确地实现你想要达到的目标.下面举一个例子.设想一个水平滚动的视图,其中一个接一个地填充图像视图,因此可以左右滚动,查看完整的集合.现在,设想你希望能够把项目拖出那个视图,并把它们添加到滚动区域下面的空间中.为此,需要识别那些子视图上向下的触摸(也就是说,垂直于滚动的方向). 这是我在尝试帮助开发人员Alex Hosgrove时所遇到的一道难题,他尝试构建一个应用程序,它粗略等价于一组冰箱磁