美文网首页
Block(块)介绍之二:Block的简单使用

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

作者: 赵亦晨 | 来源:发表于2016-10-22 01:46 被阅读0次

    前言:定义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);

    相关文章

      网友评论

          本文标题:Block(块)介绍之二:Block的简单使用

          本文链接:https://www.haomeiwen.com/subject/kpncuttx.html