Block的简单使用

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

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

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

 
 
  1. @interface UIView(UIViewAnimationWithBlocks)
  2. + (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations;

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

 
 
  1. void (^blockWithOutInputAndOutput) (void) = ^(void){
  2. NSLog(@"block Called!");
  3. };

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

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

 
 
  1. - (AFHTTPRequestOperation *)POST:(NSString *)URLString
  2. parameters:(id)parameters
  3. success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
  4. failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
  5. {
  6. AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"POST" URLString:URLString parameters:parameters success:success failure:failure];
  7.  
  8. [self.operationQueue addOperation:operation];
  9.  
  10. return operation;
  11. }

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

 
 
  1. void (^blockWithInput)(int) = ^(int inputNum) {
  2. NSLog(@"blockWithInput Called!");
  3. };

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

  • Block定义
 
 
  1. int (^blockWithOutputAndInput)(int) = ^(int inputNum) {
  2. NSLog(@"blockWithOutputAndInput Called!");
  3. return inputNum;
  4. };
  • Block调用
 
 
  1. int intNumber2 = blockWithOutputAndInput(200);
  2. NSLog(@"blockWithOutputAndInput:%d",intNumber2);

4、有多个输入参数

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

  • Block的定义
 
 
  1. double (^multiplyTwoValues)(double, double) = ^(double number1, double number2) {
  2. return number1 * number2;
  3. };
  • Block的调用
 
 
  1. double doubleNumber = multiplyTwoValues(5.0,5.6);
  2. NSLog(@"multiplyTwoValues: %f",doubleNumber);

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

  •  Block的定义
 
 
  1. int (^blockWithOutput) (void) = ^(void){
  2. NSLog(@"blockWithOutput Called!");
  3. return 100;
  4. };
  • Block的调用
 
 
  1. int intNumber1 = blockWithOutput();
  2. NSLog(@"blockWithOutput:%d", intNumber1);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值