我是靠谱客的博主 包容大地,最近开发中收集的这篇文章主要介绍黑马程序员-----Category,protocol和block(四),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

---------------------- 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;

---------------------- ASP.Net+Unity开发、 .Net培训、期待与您交流! ----------------------详细请查看: www.itheima.com

最后

以上就是包容大地为你收集整理的黑马程序员-----Category,protocol和block(四)的全部内容,希望文章能够帮你解决黑马程序员-----Category,protocol和block(四)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部