AAAA block
[self AAAA:^(BOOL isSuccessed, id userInfo, NSString *errorMsg) {
NSLog(@"AAAA: %d, userInfo: %@ errorMsg: %@", isSuccessed, userInfo, errorMsg);
}];
-(void)AAAA:(void(^)(BOOL isSuccessed,id userInfo,NSString *errorMsg))callback
{
__block NSMutableDictionary *_info = [@{} mutableCopy];
[self a001:
^(BOOL isSuccessed, id userInfo, NSString *errorMsg) {
NSLog(@"a001");
if (isSuccessed) {
[_info setObject:userInfo forKey:@"001info"];
}
else
{
[_info setObject:errorMsg forKey:@"001info"];
}
[self a002:^(BOOL isSuccessed, id userInfo, NSString *errorMsg) {
NSLog(@"a002");
if (isSuccessed) {
[_info setObject:userInfo forKey:@"002info"];
}
else
{
[_info setObject:errorMsg forKey:@"002info"];
}
[self a003:^(BOOL isSuccessed, id userInfo, NSString *errorMsg) {
NSLog(@"a003");
if (isSuccessed) {
[_info setObject:userInfo forKey:@"003info"];
}
else
{
[_info setObject:errorMsg forKey:@"003info"];
}
if (callback) {
callback(YES,@"userInfo", @"errorMsg");
}
}];
}];
}];
}
-(void)a001:(void(^)(BOOL isSuccessed,id userInfo,NSString *errorMsg))callback
{
NSLog(@"a001 inner");
if (callback) {
callback(YES,@"userInfo", @"errorMsg");
}
}
-(void)a002:(void(^)(BOOL isSuccessed,id userInfo,NSString *errorMsg))callback
{
NSLog(@"a002 inner");
if (callback) {
callback(YES,@"userInfo", @"errorMsg");
}
}
-(void)a003:(void(^)(BOOL isSuccessed,id userInfo,NSString *errorMsg))callback
{
NSLog(@"a003 inner");
if (callback) {
callback(NO,@"userInfo", @"errorMsg");
}
}
AAAA block的更多相关文章
- I.MX6 Linux udev porting
/*********************************************************************** * I.MX6 Linux udev porting ...
- iOS block
主要内容: block基本声明格式 block访问区域变量 block代替代理 block基本声明格式: ^(传入的参数){具体代码}; 注: Block实体开头是"^",接着是由 ...
- 小程序block标签配合if和else 和 动态修改标题栏
<block wx:if="{{aaaa}}"> <view>aaaa为 true,显示</view> </block> <b ...
- iOS 技术篇:从使用到了解block底层原理 (一)
1.概述 block : Object - C对于闭包的实现 . 闭包 = 一个函数(或是指向函数的指针) +该函数执行的外部的上下文变量(自由变量) 2.对block的理解 可以嵌套定义,定义 bl ...
- Objective-C中block的底层原理
先出2个考题: 1. 上面打印的是几,captureNum2 出去作用域后是否被销毁?为什么? 同样类型的题目: 问:打印的数字为多少? 有人会回答:mutArray是captureObject方法的 ...
- iOS 键盘添加完成按钮,delegate和block回调
这个是一个比较初级一点的文章,新人可以看看.当然实现这个需求的时候自己也有一点收获,记下来吧. 前两天产品要求在工程的所有数字键盘弹出时,上面带一个小帽子,上面安装一个“完成”按钮,这个完成按钮也没有 ...
- python中IndentationError: expected an indented block错误的解决方法
IndentationError: expected an indented block 翻译为IndentationError:预期的缩进块 解决方法:有冒号的下一行要缩进,该缩进就缩进
- JDBC Tutorials: Commit or Rollback transaction in finally block
http://skeletoncoder.blogspot.com/2006/10/jdbc-tutorials-commit-or-rollback.html JDBC Tutorials: Com ...
- 嵌入式&iOS:回调函数(C)与block(OC)传 参/函数 对比
C的回调函数: callBack.h 1).声明一个doSomeThingCount函数,参数为一个(无返回值,1个int参数的)函数. void DSTCount(void(*CallBack)(i ...
随机推荐
- JavaScript的深拷贝与浅拷贝
深拷贝和浅拷贝是在面试中经常遇到的问题.今天在这里总结一下. 深拷贝与浅拷贝的问题,涉及到JavaScript的变量类型,先来说说变量的类型,变量类型包括基本类型和引用类型. 基本类型:Undefin ...
- Android——多线程之Handler
Why? 因为在Android系统中UI操作并不是线程安全的,如果多个线程并发的去操作同一个组件,可能导致线程安全问题.为了解决这一个问题, android制定了一条规则:只允许UI线程来修改UI组件 ...
- 源码安装python及paramikon的初步试用
Auth: jin Date: 20140314 OS: CentOS release 5.5 (Final) 默认2.4版本 莫 1.download wget http://www.python. ...
- 使用hosts.allow和hosts.deny实现简单的防火墙
说明:我建议学习防火墙只单一学习一种就够了,这种方式虽然简单和快速,但也有些不太灵活,所以如果要深入防火墙建议转iptables 一.背景简介 在Linux上多用iptables来限制ssh和tel ...
- 迁移11g Rac中OCR和VOTEDISK
环境:OEL+oracle rac 11.2.0.3 迁移描述:将ocr和votedisk从+DATE上迁移到+OCR_VOTE上: 操作如下: [root@ora2 ~]$ /u01/app/11. ...
- NServiceBus入门:启程(Introduction to NServiceBus: Getting started)
原文地址:https://docs.particular.net/tutorials/intro-to-nservicebus/1-getting-started/ 侵删. 最好的学习NService ...
- 推荐几个对象映射(Object-Object Map)的库
在进行一些MIS相关的项目开发中,我们经常会涉及到一些数据对象和视图模型之间的互相转换, public class Customer //mapped from db { ...
- 移动端touchstart事件穿透问题,解决方案
[来源]:在开发移动端网站时,会经常徘徊在click和touchstart之间:因为touchstart虽然好用和快速响应:但是其缺点也是显而易见的,当我们大面积的使用touchstart的时候就会遇 ...
- Java 定时任务 & 任务调度
任务调度是指基于 给定时间点,给定时间间隔 或者 给定执行次数 自动执行任务. 方式1:通过 Thread 来实现 例如如下的代码,可以每隔 1000 毫秒做一次打印操作. public class ...
- CSS3 @media 查询,根据屏幕screen大小调节前端显示;媒体查询方法的使用
------------------- 1.媒体查询方法在 css 里面这样写 -------------------- @media screen and (min-width: 320px) an ...