一、block定义
二、基本使用用来保存一段代码,方便程序随时调用,标志符为^
苹果推荐的类型,效率高,在运行中保存代码。用来封装和保存代码,有点像函数,block可以在任何时候执行。
1.定义block变量
int (^SumBlock)(int, int); // 有参数,返回值类型为int void (^MyBlock)();// 无参数,返回值类型为空
2. 利用block封装代码的三种方式
3. block访问外部变量
1>block内部可以访问外部变量
2>默认情况下,block内部不能修改外部的局部变量
3>给局部变量加上__block关键字,则这个局部变量可以在block内部进行修改
4. 利用typedef定义block类型(和指向函数的指针很像)
typedef int(^MyBlock)(int ,int);
以后就可以利用这种类型来定义block变量了。
MyBlock a; a=^(int a,int b){return a-b;}; MyBlock b2=^(int n1,int n2){return n1*n2;};
三、block跟函数比较
1.相似性:a.可以保存代码 b.有返回值 c.有形参 d.调用方式一样
2.不同点
1>block的标识符是^,而函数没有
2>block默认情况下不能修改局部变量,而函数在默认情况下可以修改成员变量
3>在block情况下,当语句结束时,需要在大括号外部添加分号,而函数不需要