首页 > 代码库 > iOS学习笔记---oc语言第六天
iOS学习笔记---oc语言第六天
Block 、数组高级
block本质上就是匿名函数(没有名称的函数)
block语法和函数指针很相似
回顾函数
函数:C语?中,实现某一类功能的代码段。
完整的函数包含两部分:函数声明、函数定义
函数声明,即函数原型。例如:int sum(int x,int y);具有两个整型参 数,一个整型返回值的函数。
函数定义,即函数实现。例如:int sum(int x,int y){
retrun x + y;
}
回顾函数指针
函数指针(变量):存放函数地址(函数名)的指针变量。
int (*p)(int x,int y) = sum;
函数指针类型:int (*)(int x,int y) 即:指向 两个整型参数,一个整型返回值函数 的指针。
函数指针变量:p 函数指针的值:sum
Block
匿名函数:没有名称的函数。 例如 int (int x, int y)
因为Block是匿名函数,block变量存放的函 数的实现,通过block变量能直接调?用函数
没有名称的函数应该如何调?用?(有名称的话,可以直接调?用,也
可以通过函数指针来调?用)
int (^block1)(int,int) = ^int (int x,int y) { return x + y; }; //类型 int(^)(int,int) //变量名 block1 //初始值// ^int (int x,int y)// {// return x + y;// } typedef int (^BlockType)(int,int); BlockType block2 = ^ int (int x,int y){ return x * y; }; //给block 变量赋值时 值的特点:以 ^ 开头 函数的定义(实现),去掉函数名
block函数定义中返回值类型 可以省略 通常都会省略
1 int (^aa)() = ^(){ 2 return 10; 3 }; 4 //当block没有参数的时候可以把函数定义后面的()省略掉 5 // int (^aa)() = ^{ 6 // return 10; 7 // }; 8 NSLog(@"%d",aa()); 9 void (^hello)() = ^{10 NSLog(@"hello world");11 };12 hello();//没有返回值没有参数的block
在block体中可以直接使用外部变量,但是不能修改这个变量 想要修改在变量前面加__block;
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。