黑马程序员---Block

来源:互联网 发布:淘宝小号怎么注册 编辑:程序博客网 时间:2024/06/05 15:02
一、Block
1.block是一种数据类型,block的标志^;
2.block封装了一段代码,可以在任何时候执行;
3.block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值;
4.block和函数:
  • 都可以保存(封装)一段代码;
  • 有形参,有返回值;
  • 调用方式一样;
  • 函数:把一段代码封装到函数中,在某一时刻调用函数,在编译之前代码是固定、确定的;
  • block:程序运行时保存一段代码,程序运行过程中凭空产生一段代码保存起来。
二、Block的定义
1.block的定义:
  • 返回值类型  (^block对象名) (形参类型, ……)  =  ^(实参类型 变量名, ……)  {
return  变量表达式;
};
2.block内部可以访问外面的变量,默认情况下,block内部不能修改外面的局部变量;
3.给外面局部变量加上__block关键字,这个局部变量就可以在block内部修改。
三、block和函数指针对比
1.定义函数的指针:
  • 返回值类型  (*函数名) ();
2.定义block:
  • 返回值类型  (^block对象名) (形参类型,……);
3.调用函数指针:
  • (*函数名) (实参,……);
4.调用block:
  • block对象名 (实参,……);
5.*指针类型变量,^block类型变量。
四、Block的赋值
1.在声明的同时定义变量,然后赋值:
  • 返回值类型  (^block对象名) (形参类型, ……)  =  ^(实参类型 变量名, ……)  {
return  变量表达式;
};
2.也可以先用typedef先声明类型,再定义变量进行赋值:
  • typedef  返回值类型  (^类型名) (形参类型, ……);
  • 类型名  变量名  = ^(实参类型 变量名, ……)  {
    return  变量表达式;
    };
五、Block需要掌握的东西
1.如何定义block变量;
2.如何利用block封装代码;
3.block访问外部变量;
4.利用typedef定义block类型。

 

0 0
原创粉丝点击