首页 > 代码库 > 【OC加强】block数据类型的定义和调用以及传参等应用
【OC加强】block数据类型的定义和调用以及传参等应用
(1)指向函数的指针的定义方法和调用:
#import <Foundation/Foundation.h> void test(){ NSLog(@"hello"); } int main(int argc, const char * argv[]) { @autoreleasepool { //定义 void (*p1)()=test; //使用 p1(); } return 0; }
而block的定义与之类似。
//定义block,注意^以及末尾的分号;右边的函数体也不再需要函数名称,只要前面有myBlock即可 void (^myBlock)()=^{ NSLog(@"hello"); }; //调用,和函数类似 myBlock();
block于指向函数的指针的区别在于:后者只能在后面放一个函数名,而不能直接把函数的代码(函数体)整个放在后面。而前者弥补了这个缺陷,相当于把整个代码块“封装”在一起了。
(2)带有参数的block
//定义block,注意^以及末尾的分号; int (^sum1)(int a,int b)=^int (int a,int b){ return a+b; }; //调用,和函数类似 NSLog(@"%d",sum1(5,6));
(3)既然是数据类型,它也可以当做参数进行传递。
(4)如果需要在block代码中改变block外的变量,需要在该变量前面添加__block关键字。
【OC加强】block数据类型的定义和调用以及传参等应用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。