block语法详解

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);  
      
    }  


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值