黑马程序员技术交流社区
标题:
OC中BLOCK
[打印本页]
作者:
LKWinIos
时间:
2014-11-30 12:22
标题:
OC中BLOCK
一、初识BLOCK
BLOCK是苹果推荐的类型,效率高,在运行中保存代码。用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行。
标示符为 ^
int (^MYblock)(int,int);//有参数,返回值类型为int
复制代码
void (^MYblock)();//无参数,返回值类型为空
复制代码
BOLCK和函数有些相似点:(1)可以保存代码(2)有返回值(3)有形参(4)调用方式一样。
二、利用BLOCK封装代码
// 利用block封装代码
// 1.接收两个参数
int (^MYblock1)(int,int) = ^(int a,int b){
return a+b;
}
// 2.无参数形式
int (^MYblock2)() = ^(){
return 10;
}
// 3.无参数省形式
int (^MYblock3)() = ^{
return 10;
}
复制代码
三、Block访问外部变量
1)Block内部可以访问外部变量;
2)默认情况下,Block内部不能修改外部的局部变量
3)给局部变量加上__block关键字,则这个局部变量可以在block内部进行修改。
四、利用typedef定义block类型(和指向函数的指针很像)
Typedef int(^MyBlock)(int ,int);
复制代码
以后就可以利用这种类型来定义block变量了。
MyBlock a,b;
a=^(int a,int b){return a-b;};
MyBlock b2=^(int n1,int n2){return n1*n2;};
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2