您的位置:首页 > 其它

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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: