您现在的位置是:首页 > 文章详情

Objective-C:自定义Block函数

日期:2017-06-24点击:280

Block函数是一种类似于函数指针的函数,程序员只需要把需要操作的代码封装到定义的block中即可,以后需要使用时,直接调用,非常方便....

 

举例如下:

第一种形式:自定义一个无返回值而且无参数的block

复制代码
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //第一种形式:自定义无参数的block函数类型 typedef void (^FirstBlock)(void); //创建block,并将代码封装其中 FirstBlock block = ^(void){ for (int i=0; i<5; i++) { NSLog(@"i:%d",i); } }; //调用block函数  block(); return 0; }
复制代码

运行结果:

复制代码
2015-10-17 18:38:35.317 自定义Block函数[2507:145127] i:0 2015-10-17 18:38:35.319 自定义Block函数[2507:145127] i:1 2015-10-17 18:38:35.319 自定义Block函数[2507:145127] i:2 2015-10-17 18:38:35.319 自定义Block函数[2507:145127] i:3 2015-10-17 18:38:35.319 自定义Block函数[2507:145127] i:4 Program ended with exit code: 0
复制代码

 

第二种形式:自定义一个无返回值但是有参数的block

复制代码
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //第二种形式:自定义有参数的block函数类型 typedef void (^SecondBlock)(int); //创建block,并将代码封装其中 SecondBlock block = ^(int length){ for (int i=0; i<length; i++) { NSLog(@"i:%d",i); } }; //调用block函数 block(5); } return 0; }
复制代码

运行结果:

复制代码
2015-10-17 18:38:35.317 自定义Block函数[2507:145127] i:0 2015-10-17 18:38:35.319 自定义Block函数[2507:145127] i:1 2015-10-17 18:38:35.319 自定义Block函数[2507:145127] i:2 2015-10-17 18:38:35.319 自定义Block函数[2507:145127] i:3 2015-10-17 18:38:35.319 自定义Block函数[2507:145127] i:4 Program ended with exit code: 0
复制代码

 

第三种形式:自定义有返回值但是无参数的block函数类型

复制代码
typedef int (^ThirdBlock)(void); static int sum = 0; //创建block,并将代码封装其中 ThirdBlock block3 = ^(){ for (int i=0; i<5; i++) { sum = sum + i; } return sum; }; //调用block函数 NSLog(@"sum=%d",block3());
复制代码

运行结果:

2015-10-25 16:43:21.171 自定义Block函数[3172:151234] sum=10 Program ended with exit code: 0

 

第四种形式:自定义有返回值而且有参数的block函数类型

复制代码
//第四种形式:自定义有返回值而且有参数的block函数类型 typedef int (^FourBlock)(int); //创建block,并将代码封装其中 FourBlock block4 = ^(int length){ return length; }; //调用block函数 NSLog(@"block4=%d",block4(5)); }
复制代码

 运行结果:

2015-10-25 16:43:21.171 自定义Block函数[3172:151234] block4=5 Program ended with exit code: 0

 

最后还有一个知识点:

 

所以,对block声明为属性时,使用copy修饰。

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
分类:  Objective-C

本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/4887969.html,如需转载请自行联系原作者
原文链接:https://yq.aliyun.com/articles/366128
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章