block 实用小例子

本篇是简单介绍iOS 开发中block的使用(附demo):

/*

 声明一个block

 (返回类型)(^block名称)(参数类型)=^(参数列表){代码实现};。

 如果没有参数,等号后面参数列表的()可以省略。

 */



首先 工程里面传两个VC:test1ViewController(传参数调用block) ,ViewController(根据block接收传回的参数)

//test1ViewController.h

//定义

block typedef void (^DataBlock)(NSString *backMsg); //新建block变量

@property (copy) DataBlock dataBlock;

//test1ViewController.m 中,根据某个条件自行触发传参

//block变量回调    

if (self.dataBlock) {        

        self.dataBlock(@"嘿嘿  我是block传的Str");    

}

//ViewController.m 中 拿到block传回的值

    test1 = [[test1ViewController alloc] init];

    test1.dataBlock = ^(NSString *backMsg){   // 1

                 NSLog(@"text is %@",backMsg);

      };

//这里输出的就是: 嘿嘿  我是block传的Str


这样一个简单的block传值小例子就写完啦。

下面介绍另一种block 运用 :函数内嵌block回调

//test1ViewController.h 

//直接带函数内Block回调的接口函数

-(void)processWithStr:(NSString *)str withCallBackBlock:(DataBlock)myDataBlock;

//test1ViewController.m 中

//将block嵌入函数

-(void)processWithStr:(NSString *)str withCallBackBlock:(DataBlock)myDataBlock{    

    myDataBlock(@"我是传回参数");

}


//ViewController.m 中 拿到block传回的值   

 test1 = [[test1ViewController alloc] init];

//函数内嵌block回调(比较好)    

[test1 processWithStr:@"随便写的一个Str" withCallBackBlock:^(NSString *backMsg) {         NSLog(@"text is:%@",backMsg);     }];

//这里打印的是 :我是传回参数


                                                                                                                                                            附demo

你可能感兴趣的:(block 实用小例子)