Block简介及写法

一:Block简介

Block的实际行为和Function很像,最大的差别是在可以存取同一个Scope的变量值。Block实体形式如下:

^(传入参数列){行为主体};

Block实体开头是“^”,接着是由小括号所包起来的参数列(比如 int a, int b, int c),行为主体由大括号包起来,专有名字叫做block literal。行为主体可以用return回传值,类型会被compiler自动辨别。如果没有参数列要写成: ^(void){ //逻辑处理代码 }; 可以写成:^(){ //逻辑处理代码 }; 还可以写成(推荐):^{ //逻辑处理代码 };

有参数列就必须写成:

^(int a,NSString* name){ //逻辑处理代码 };

二,Block Pointer 

Block Pointer是这样定义的:

回传值(^名字)(参数列);

//声明一个blockD的Block Pointer,其所指向的Block有一个int输入和int输出  

int (^blockD)(int); 

 //将Block实体指定给blockD 变量

blockD = ^(int a){

 return a*a ;

 }; 

 //调用方法,很像function的用法 

 int result = blockD(5); 

 NSLog(@"%d", result);  

三,block在开发中的推荐的写法,逻辑清晰


typedef void(^BackToReloadTableViewBlock)(void);//定义一个block类型别名BackToReloadTableViewBlock,代表改block类型


@property(copy,nonatomic)BackToReloadTableViewBlock backBlock;//声明一个backBlock变量,属于BackToReloadTableViewBlock类型


2,简单写法


@property(copy,nonatomic) void(^BackToReloadTableViewBlock)(void);//直接定义一个BackToReloadTableViewBlock变量 (Block类型的变量)


两种写法的理解:

1,typedef void(^BackToReloadTableViewBlock)(void); 扩展理解为:typedef void(^)(void) BackToReloadTableViewBlock;  表示定义一个别名BackToReloadTableViewBlock 来代表该Block

2,void(^BackToReloadTableViewBlock)(void); 扩展理解为:void(^)(void) BackToReloadTableViewBlock;定义了一个BackToReloadTableViewBlock的变量;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值