block语法详解

来源:互联网 发布:爱克折弯机编程视频 编辑:程序博客网 时间:2024/06/15 20:54

Block语法帮助我们组织独立的代码段,并提高复用性和可读性。

这一集我们主要讲创建block和通过block进行方法回调。

先看一下block的结构










1.创建一个无参数无返回值的block

void(^myblock)() = ^(){         NSLog(@"first block");     };  /    调用     myblock(); 

2.创建一个无参数有返回值类型的block

    void(^myblock)(NSString * )= ^(NSString * a)          {      };      myblock(@"123");  
3.创建一个多参数有返回值的block

NSArray*(^myblock)(NSString*,int)= ^(NSString * str,int b)      {  //    数组里都是指针对象类型的    int /float /double 用nsnumber转成对象类型          NSNumber * num = [NSNumber numberWithInt:b];          NSArray * array = [NSArray arrayWithObjects:str,num, nil nil];          NSLog(@"array = %@",array);          return array;                };        myblock(@"123",67); 

接下来开始block 回调用来在视图控制器间传值

方法1 属性传值 假设一个字符串从B视图控制器传给A视图控制器

B.h:

1. 定义block 的型参类型 (类型名首字母大写哟)

2.设置一个这个类型的成员变量

typedef void(^secondblock)(NSString*);  @interface SecongViewController : UIViewController  {  }  @property(nonatomic,copy)secondblock secondb;

3.注意: block类型的没有*

 B.m

    //    调用用传给A          self.secondb(@"hahaha");  

方法2:方法传值假设从B视图控制器传给A视图控制器改变a的背景颜色

B.h

typedef void(^secondblock)(NSString*);  //没有参数代表任意参数    在定义的时候 @interface SecongViewController : UIViewController  {        colorblock _changecolorblock;  }  -(void)changColorWithBlock:(colorblock)block;

B.m

    -(void)buttonAction:(id)sender      {                _changecolorblock([UIColor greenColor]);                  }      -(void)changColorWithBlock:(colorblock)block      {          _changecolorblock = Block_copy(block);            }  


0 0
原创粉丝点击