ios block详解

什么是typedef?

typedef就是一种替换,与宏不同的是它还可以进行对象的声明。

typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。

例如:

typedef int NSInteger;

表示对NSInteger进行了一个别名的设置,其表示的就是long或者int类型。

char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针,和一个字符变量;

即* pa 和 pb,pb是没有* 的

// 以下则可行:

typedef char* PCHAR;

PCHAR pa, pb;则是两个指针。

使用typedef来定义一个block

1.typedef void(^AAABlock)(NSString *string);

2.typedef int(^BBBBlock)(NSString *string);

3.typedef int(^CCCBlock)(void);

1是我们定义了一个名为AAABlock的block,它的返回值是void,接受参数为NSString类型的string。

2是我们定义了一个名为BBBBlock的block,它的返回值是int,接受参数为NSString类型的string。

3是我们定义了一个名为CCCBlock的block,它的返回值是int,没有参数。

以此类推。

这里主要讲一下如何在具体方法中实现block回调


我们以AFNetworking封装为例子。

首先定义两个回调处理的block:

typedef void(^SuccessBlock)(id responseBody);

typedef void(^FailureBlock)(NSString *error);

此时我们定义一个方法,参数中加入block:

-(void)postDataToServer:(NSMutableDictionary*)parameters url:(NSString*)url successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock{

可以看到上面的方法中,方法中都带上了block参数。

接着方法的编写:

-(void)postDataToServer:(NSMutableDictionary*)parameters url:(NSString*)url successBlock:(SuccessBlock)successBlock failureBlock:(FailureBlock)failureBlock{

[manager POST:urlStr parameters:parameters success:^(AFHTTPRequestOperation*operation,id responseObject){

successBlock(responseObject);

}failure:^(AFHTTPRequestOperation*operation,NSError*error){

}];

}

此时完成方法的编写。

然后我们来调用这个方法:

[[NetworkSingleton sharedManager] postDataToServer:postDict url:[NSString stringWithFormat:@""] successBlock:^(id responseBody) {

//业务代码

}failureBlock:^(NSString*error) {

//业务代码

}];

这样,一个block具体使用就完成了。

感谢指教。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、block简介 block字面意思就是代码块 iOS4.0 Apple引入的特性 block是Objectiv...
    呆子四二阅读 1,613评论 1 6
  • 1、概述 闭包 = 一个函数「或指向函数的指针」+ 该函数执行的外部的上下文变量「也就是自由变量」;Block 是...
    DeerRun阅读 683评论 0 0
  • 一、概述 闭包 = 一个函数「或指向函数的指针」+ 该函数执行的外部的上下文变量「也就是自由变量」;Block 是...
    简单_6509阅读 1,560评论 0 1
  • 转自李峰峰博客 一、概述 闭包 = 一个函数「或指向函数的指针」+ 该函数执行的外部的上下文变量「也就是自由变量」...
    Joshua520阅读 1,020评论 0 0
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,217评论 30 472