iOS block的使用(主要介绍回调时候的传参问题)

对于block不需要做太多的介绍,而block的声明和简单的调用因为太简单而在这不多做介绍,若需要查看这部分的问题请参考http://www.raywenderlich.com/9438/how-to-use-blocks-in-ios-5-tutorial-part-2

个人对于block的理解:在目前的项目中,block主要用于回调使用,基本原理是:在A中调用B的函数,调用的函数执行到一定程度时调用A中的block。在相互调用的时候可以进行参数的传递。下面例子主要是介绍block回调时的参数传递。其中共有两个类,一个时ViewController,一个时BlockTest。在ViewController中调用BlockTest中的方法:

DoSomethingWithBlockandRet,在DoSomethingWithBlockandRet函数回调block。具体代码如下:

ViewController.m:

- (IBAction)BlockStart:(UIButton *)sender {

    

   BlockTest *block = [[BlockTestalloc]init];

    NSLog(@"button click");

    [block DoSomethingWithBlockandRet: ^(int a){

       NSLog(@"接收到参数:%d",a);

       return1;

    }];

    

}

BlockTest.m:

//测试有返回值的block调用


- (void)DoSomethingWithBlockandRet: (int(^)(int a))completion

{

    NSLog(@"block start");

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

       int reslut = completion(5);

       NSLog(@"%d", reslut);

    });

    

}

下划线部分为block的回调,传递整形5,在block的实现部分可以得到5的值。而在block的返回值为1,在下划线部分也可以得到返回值。因此输出结果应该为:

2014-05-22 17:44:32.010 BlockTest[1936:60b] button click

2014-05-22 17:44:32.013 BlockTest[1936:60b] block start

2014-05-22 17:44:37.501 BlockTest[1936:60b]接收到参数:5

2014-05-22 17:44:37.504 BlockTest[1936:60b] 1


附件下载地址:http://download.csdn.net/download/heheceo/7388457

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值