iOS block简单使用

.什么是Blocks

BlocksC语言的扩充功能。如果用一句话来概括就是:带有自动变量的匿名函数。

      第一次看见Blocks的时候,感觉很类似C语言的函数指针,尤其是Block类型变量,更是有极强的相似度。但Blocks不是一个指针,而是一个不带名字的函数,它允许开发者在两个对象之间将任意的语句当作数据进行传递,所以在一些场合使用Blocks很方便简洁。


.Blocks的作用

做回调.比代理更简单便捷.


.Blocks的写法

1.无参无返回值的Blocks

void (^blocks1)(void);

2.有参有返回值的Blocks

 int (^blocks2)(int a,int b);

3.自定义无参无返回值的Blocks

typedef void (^typedefBlocks1) (void);

4.自定义有参有返回值的Blocks

typedef int (^typedefBlocks2) (int a,int b);


.Blocks作为参数传递

1.无参无返回值的Blocks作参数传递

- (void)textBlocks1:(void (^)(void) )blocks

2.有参有返回值的Blocks作参数传递

-(int)textBlocks2:(int (^)(int a,int b))blocks

3.自定义无参无返回值的Blocks作参数传递

- (void)textBlocks3:(typedefBlocks1)blocks

4.自定义有参有返回值的Blocks作参数传递

- (int)textBlocks4:(typedefBlocks2)blocks


.Blocks做回调

 ViewController2 *vc2  = [[ViewController2 alloc]init];

    [vc2 setBlocks:^(CGFloat fontSize) {

        label.font = [UIFont systemFontOfSize:fontSize];

    }];

    [self presentViewController:vc2 animated:YES completion:nil];


@interface ViewController2 : UIViewController

{

   void (^saveBlocks)(CGFloat fontSize);

}

- (void)setBlocks:(void (^)(CGFloat fontSize))blocks;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值