概述
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
Block
1>概念
Block是用来封装一段代码,与函数不同的是Block是在程序运行过程中用来保存一段代码,运行时才确定的,不像函数在编译时就必须确定。
2>Block定义
返回值 (^Block名)(参数列表) = ^(参数列表){
//Block实现
return 返回值
};
注意
①如果Block没有参数,那么等号右边的(参数列表)可以省略。
②因为Block是数据类型所以必须加上“;”。
3>Block调用
Block不是普通代码块,必须像函数一样显示调用,才能执行Block;调用方法跟函数指针一样
4>举例
①无参数的Block
int main()
{
//Block定义
void(^MyBlock)() = ^{
NSlog(@"-----------");
}
//Block调用
MyBlock();
return 0;
}
②有参数的Block
int main()
{
int a;
//Block定义
int (^sum)(int,int) = ^(int a, int b){
return a + b;
}
//Block调用
a = sum(10,20);
return 0;
}
5>函数指针与Block的比较
定义
①Block: 返回值 (^Block名)(参数列表) = ^(参数列表){//Block体实现};
eg:int (^sum)(int, int) = ^(int a, int b){//Block体实现};
②函数指针:返回值 (*指针名)(参数列表);
eg:int (*p)(int, int);
p = sum;
调用
①Block: Block名(参数列表);
eg:sum(10,20);
②函数指针:指针名(参数列表);
p(10,20);
6>typedef使用
①Block
typedef int (^SumBlock)(int, int);
SumBlock myblock = ^(参数列表){//Block体实现};
②函数指针
typedef int (*pSum)(int, int);
pSum p = sum;
最后
以上就是包容大地为你收集整理的黑马程序员-----Category,protocol和block(四)的全部内容,希望文章能够帮你解决黑马程序员-----Category,protocol和block(四)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复