block是什么?
block就是一种数据类型,定义的变量用来存储代码块,
我们可以在任意想执行这段代码的地方,通过block变量名调用这段代码
2>函数的指针
//定义一个指向无参数无返回值的函数的指针
void (*p1)();
void (*P1)();
//定义一个指向有一个int类型参数,返回值是int类型的函数的指针
int (*p2)(int opNum1);
int (*P2)(int opNum1);
//定义一个指向有三个参数,分别是int,char,double,返回值是double的函数的指针
double (*p3)(int opNum1, char opNum2,double opNum3);
double (*p3)(int opNum1,char opNum2,double opNum3);
3>block类型的变量
//定义一个block变量,里面存储一段无参数无返回值的代码
void (^block1)();
void(^block1)();
//定义一个block变量,里面存储一段有一个int类型参数,返回值是int类型的代码
int (^block2)(int opNum1);
int (^blodk2)(int num);
//定义一个block变量,里面存储一段有三个参数,分别是int,char,double,返回值是double的代码
double (^block3)(int opNum1, char opNum2,double opNum3);
double (^block3)(int num1,char num2,double num3);
3、 block访问外部变量的问题
1.block变量内存储的代码块的内部是可以定义变量
2.block变量内存储的代码块,是可以访问外部的变量的
3.block内存储代码块,可以修改全局变量,但是不能修改外部的局部变量
4.block内部的代码块,如果一定要修改外部的局部变量,可以在定义这个变量的时候,用__block修饰
5.为什么block内部的代码块可以修改全局变量,但是不能修改外部的局部变量
因为block是一个代码块,什么时候执行不确定,可能执行的时候要访问的变量都不在了
|