您的位置:首页 > 移动开发 > IOS开发

Block的简单使用

2016-04-12 10:19 633 查看
定义Block时,可以对Block的输入参数以及返回值的类型进行定义。可以有输入参数,也可以没有输入参数;可以设置一个输入参数,也可以设置多个参数;可以有返回值,也可以没有返回值。


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

这种形式的Block,无需任何输入参数,并且无返回值,一般都是在该Block中完成一些动作,例如在完成一段动画后,执行一段Block,如下所示:
@interface UIView(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 = [self HTTPRequestOperationWithHTTPMethod:@"POST" URLString:URLString parameters:parameters success:success failure:failure];
 
[self.operationQueue addOperation:operation];
 
return operation;
}

我们也可以自定义一个有输入参数、无返回值的Block,如下所示:
void (^blockWithInput)(int) = ^(int inputNum) {
NSLog(@"blockWithInput Called!");
};


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

Block定义
int (^blockWithOutputAndInput)(int) = ^(int inputNum) {
NSLog(@"blockWithOutputAndInput Called!");
return inputNum;
};

Block调用
    int intNumber2 = blockWithOutputAndInput(200);
NSLog(@"blockWithOutputAndInput:%d",intNumber2);


4、有多个输入参数

可以在Block定义中传入多个参数。
Block的定义
double (^multiplyTwoValues)(double, double) = ^(double number1, double number2) {
return number1 * number2;
};

Block的调用
    double doubleNumber = multiplyTwoValues(5.0,5.6);
NSLog(@"multiplyTwoValues: %f",doubleNumber);


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

 Block的定义
int (^blockWithOutput) (void) = ^(void){
NSLog(@"blockWithOutput Called!");
return 100;
};

Block的调用
    int intNumber1 = blockWithOutput();
NSLog(@"blockWithOutput:%d", intNumber1);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios