1.block 是oc的一个数据类型
2.作用:用了封装一段代码,可以在任何时候调用执行。即在编译的时候忽略block修饰的代码段,在调用这个代码时,也就是运行时,
编译器会自动加载这个代码, so这样的程序,效率非常高
3.语法:
定义一个block类型的变量:有参-》返回值类型 (^变量名) (参数类型1,参数类型2) 。eg. void (^myblock)(int,int)
无参-》返回值类型 (^变量名) eg. void (^myblock)
定义一个block代码段: 有参-》^(参数类型1 参数名称,参数类型2 参数名称){// 代码,也可以有返回值}
无参-》^(){//代码}或 ^{//代码}
调用一个block代码段:变量名(参数值...)
4.用typedef 定义一个bolck类型的变量:
定义: typedef 返回值类型 (^自定义类型名) (参数类型,...)
使用: 自定义类型名 变量名=^(参数类型 参数名称,...)`{//代码}
这个使用类似指向函数的指针:定义-》返回值 (*指针名) (参数类型,...),赋值-》指针名=函数名称,调用-》指针名(参数值,...)
5.block代码段内,可以访问该代码段外的变量,但是默认不能修改外部的变量,
使用 __block 关键字修饰的变量,在block代码段内就可以修改了
eg. __block int a=0;