第十九章 block
- 如何定义block
// 如何定义block
void(^blockName)() = ^() {
NSLog(@"block ");
};
block类型:void(^blockName)()
这里的blockName是block的变量名
- 如何使用block
// 使用block
blockName();
小技巧,在程序中直接敲inline,就会出现block函数 给block起别名的时候,我们可以直接敲typedefBlock
typedef <#returnType#>(^<#name#>)(<#arguments#>);
typedef void(^name)(NSString *);
/**
* block
* void:返回类型
* name:类型别名,可以看成是类型例如int类型
* @param NSString 参数
*/
typedef void(^name)(NSString *);
typedef void(^myBlock)(NSString * name);
myBlock block = ^(NSString * name) {
NSLog(@"%@",name);
};
block(@"好的");
- block 跟函数和方法很像,保存一段代码;
- 先保存一段代码,等到恰当的时间再来使用
- 什么时候使用block?
- 在项目中block一般用来传值(逆传)
- 例如请求网络数据,一般会有延迟,但是我们事前已经知道了需要展示在什么地方,先把展示控件的代码先保存到block中,等请求到数据的时候直接调用
block使用流程,我们先在需要传值得页面(B)定义block,用typedef来定义,之后我们在需要传值的方法中开始实现这个block,(例如tableView(A)举例),我们是想在传值页面改变数据,反向传值到tableView上,我们需要现在tableView页面的跳转方法里面设置实现block需要做的一个步骤,例如b.block=^(){[a.tableView reloadData]};,同时在B中设置if(_block){block()}实现以下