第十九章 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()}实现以下

results matching ""

    No results matching ""