Block
2015-07-22 21:38
232 查看
Block
查看变量的数据类型的方法:
如:int*
p;
整型指针的变化总结:
整型-》指向整型的指针
1.拷贝整型的声明 int a;
2.将变量名称换个名字 int q;
3.给变量加一个括号 int (q);
4.在变量的前面加一个*号 int (*q);
回顾:C中的函数作为一个参数:intsub(intfunc1(void),MySum_tfunc2);sub函数的两个参数都是函数。
第二个参数有些特殊,它是一个函数类型被改名后的函数。它原来可能是这样的:intfunc(int,int);
被用typedef修改后变成了这样:typedefintMySum_t(int,int)
这里有一个规则:
函数指针:
// 函数指针
int(*sub1)(intfunc1(void),MySum_tfunc2);
sub1
= ⊂
NSLog(@"%d",(*
sub1)(func6,func5));与原函数的效果是一样的。就如同整型指针的用法:
inta
=1;
int*
p
= &a;
NSLog(@"a=%d",a);
NSLog(@"*p=%d",*p);还有稍微简单的例子,方便与理解:
int(*add)(int,int);
add
= ∑
NSLog(@"add=%d",add(6,4));
NSLog(@"sum=%d",sum(6,4));
输出的结果是一样的。
函数指针的赋值有两种方式:首先func是一个函数指针,1.func = &func1; 2.func = func.
函数指针的调用有两种方式:1.func(); 2.*func();
函数指针和block的相似之处:^和*
如何看一个变量的类型总结:要查看谁的数据类型,将其除去,剩下的部分就是它的数据类型。如: int * p. p的数据类型就是int *
block的格式:返回值类型
(^block名)
(参数);void(^block)(void);如果block比较复杂,还可以利用typedef对其(类型)进行改名:typedefvoid(^MyBlock_t)(void);
这样MyBlock就成了这样void(^block)(void);的一个block了,可以利用MyBlock定义新的block。
typedef用法的回顾:如:将int类型重命名。 typedef int myInt; myInt a;
这样定义的变量a就是整型的。注意:查看等价关系:别名
和
除去别名、typedef剩下的东西等价。
如上面的myInt和int是等价的。
block的声明:返回值类型
(^块名)
(参数的类型)
block的赋值:^返回值类型
(参数) {具体实现的内容};赋值语句写完要写封号。
block声明和赋值可以写在一起,例子:(当返回值类型和参数为空时可以省略)
void(^
block2)(void)=
^void{
NSLog(@"将声明和赋值写在一起");
};
调用块:block2();
block的访问权限:
对于普通变量,在block中只能对其进行访问,而不能更改,要想对其更改,需要在外部变量名前加__block.注意:是两个下划线。
block可以作为函数的参数:
block:
block是用来保存代码的。 block的标志:^。不是普通的代码块。
(一下都是官方的标准定义)
1.block封装了一段代码,可以在任何时候执行。(很像一个函数——可以保存代码,有参数,有返回值)
2.block可以作为函数参数或者函数的返回值,而其本身又可以带参数和返回值。苹果官方建议多使用block。
查看变量的数据类型的方法:
如:int*
p;
整型指针的变化总结:
整型-》指向整型的指针
1.拷贝整型的声明 int a;
2.将变量名称换个名字 int q;
3.给变量加一个括号 int (q);
4.在变量的前面加一个*号 int (*q);
回顾:C中的函数作为一个参数:intsub(intfunc1(void),MySum_tfunc2);sub函数的两个参数都是函数。
第二个参数有些特殊,它是一个函数类型被改名后的函数。它原来可能是这样的:intfunc(int,int);
被用typedef修改后变成了这样:typedefintMySum_t(int,int)
这里有一个规则:
函数指针:
// 函数指针
int(*sub1)(intfunc1(void),MySum_tfunc2);
sub1
= ⊂
NSLog(@"%d",(*
sub1)(func6,func5));与原函数的效果是一样的。就如同整型指针的用法:
inta
=1;
int*
p
= &a;
NSLog(@"a=%d",a);
NSLog(@"*p=%d",*p);还有稍微简单的例子,方便与理解:
int(*add)(int,int);
add
= ∑
NSLog(@"add=%d",add(6,4));
NSLog(@"sum=%d",sum(6,4));
输出的结果是一样的。
函数指针的赋值有两种方式:首先func是一个函数指针,1.func = &func1; 2.func = func.
函数指针的调用有两种方式:1.func(); 2.*func();
函数指针和block的相似之处:^和*
如何看一个变量的类型总结:要查看谁的数据类型,将其除去,剩下的部分就是它的数据类型。如: int * p. p的数据类型就是int *
block的格式:返回值类型
(^block名)
(参数);void(^block)(void);如果block比较复杂,还可以利用typedef对其(类型)进行改名:typedefvoid(^MyBlock_t)(void);
这样MyBlock就成了这样void(^block)(void);的一个block了,可以利用MyBlock定义新的block。
typedef用法的回顾:如:将int类型重命名。 typedef int myInt; myInt a;
这样定义的变量a就是整型的。注意:查看等价关系:别名
和
除去别名、typedef剩下的东西等价。
如上面的myInt和int是等价的。
block的声明:返回值类型
(^块名)
(参数的类型)
block的赋值:^返回值类型
(参数) {具体实现的内容};赋值语句写完要写封号。
block声明和赋值可以写在一起,例子:(当返回值类型和参数为空时可以省略)
void(^
block2)(void)=
^void{
NSLog(@"将声明和赋值写在一起");
};
调用块:block2();
block的访问权限:
对于普通变量,在block中只能对其进行访问,而不能更改,要想对其更改,需要在外部变量名前加__block.注意:是两个下划线。
block可以作为函数的参数:
block:
block是用来保存代码的。 block的标志:^。不是普通的代码块。
(一下都是官方的标准定义)
1.block封装了一段代码,可以在任何时候执行。(很像一个函数——可以保存代码,有参数,有返回值)
2.block可以作为函数参数或者函数的返回值,而其本身又可以带参数和返回值。苹果官方建议多使用block。
相关文章推荐
- ubuntu12.04 残疾人游客
- Ubuntu在下面LAMP(Linux+Apache+MySQL+PHP) 开发环境的搭建
- iOS设置navigationbar的半透明,解决卡顿现象
- 数据库之存储、触发器
- EF中执行原生sql与使用Local获取本地数据
- Scala深入浅出实战经典之 List的foldLeft、foldRight、sort操作代码实战
- Minimum Depth of Binary Tree
- Android控件介绍
- Python yield用法
- Intellij Idea如何识别某个文件的编码方案
- Linux kernel 分析之十:内核线程
- 相关函数(暂存)
- PHP导出word(纯文字)
- 一天学会Git(一)
- HDU 1934 Minimum Inversion Number(树状数组,线段树)
- [面试相关] 100个iOS开发面试题 你将如何应对
- 股票学习(财务分析16)
- 关于java基础--管道流和压缩
- 我也来谈一谈c++模板(一)
- 管理场景(基础)