iOS 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];
        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);

}
block回调结束鸟 如果觉得协议传值麻烦难记不妨试试block吧。






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值