Block(块)介绍之二:Block的简单使用

前言:定义Block时,可以对Block的输入参数以及返回值的类型进行定义。可以有输入参数,也可以没有输入参数;可以设置一个输入参数,也可以设置多个参数;可以有返回值,也可以没有返回值。

1、无输入参数+无返回值

这种形式的Block,无需任何输入参数,并且无返回值,一般都是在该Block中完成一些动作,例如在完成一段动画后,执行一段Block,如下所示:

@interfaceUIView(UIViewAnimationWithBlocks)

+(void)animateWithDuration:(NSTimeInterval)duration animations:(void(^)(void))animations;

我们也可以自定义一个无输入参数、无返回值的Block,如下所示:

void(^blockWithOutInputAndOutput)(void)=^(void){

NSLog(@"block Called!");

};

2、有输入参数+无返回值

这种形式的Block,有输入参数,但无返回值。一般都是在该Block中根据输入参数完成一些动作,例如,在AFNetworking中,当获取到网络反馈的数据后,会调用一个Block,并且把从服务器获取的数据作为参数,传入Block。

-(AFHTTPRequestOperation*)POST:(NSString*)URLString

parameters:(id)parameters

success:(void(^)(AFHTTPRequestOperation*operation,id responseObject))success

failure:(void(^)(AFHTTPRequestOperation*operation,NSError*error))failure

{

AFHTTPRequestOperation*operation=[selfHTTPRequestOperationWithHTTPMethod:@"POST"URLString:URLStringparameters:parameters success:success failure:failure];

[self.operationQueue addOperation:operation];

returnoperation;

}

我们也可以自定义一个有输入参数、无返回值的Block,如下所示:

void(^blockWithInput)(int)=^(intinputNum){

NSLog(@"blockWithInput Called!");

};

3、有输入参数+有返回值

Block定义

int(^blockWithOutputAndInput)(int)=^(intinputNum){

NSLog(@"blockWithOutputAndInput Called!");

returninputNum;

};

Block调用

intintNumber2=blockWithOutputAndInput(200);

NSLog(@"blockWithOutputAndInput:%d",intNumber2);

4、有多个输入参数

可以在Block定义中传入多个参数。

Block的定义

double(^multiplyTwoValues)(double,double)=^(doublenumber1,doublenumber2){

returnnumber1*number2;

};

Block的调用

doubledoubleNumber=multiplyTwoValues(5.0,5.6);

NSLog(@"multiplyTwoValues: %f",doubleNumber);

5、无输入参数+有返回值

Block的定义

int(^blockWithOutput)(void)=^(void){

NSLog(@"blockWithOutput Called!");

return100;

};

Block的调用

intintNumber1=blockWithOutput();

NSLog(@"blockWithOutput:%d",intNumber1);

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,933评论 18 139
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,150评论 6 13
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,316评论 25 708
  • 看来我错了,我们之中又一个人通过死来证明自己是无辜的---又迟了一步
    CNBLUEone阅读 166评论 0 0
  • 该书中提到建设型商业和传统商业,在市场选择上有一个重要差异。 传统商业是保护市场击败对手导向的,而建设型商业则是市...
    吴少杰1988阅读 206评论 0 0