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剩下的东西等价。      如上面的myIntint是等价的。

block的声明:返回值类型 ^块名) (参数的类型)

block的赋值:^返回值类型 (参数) {具体实现的内容};赋值语句写完要写封号。

block声明和赋值可以写在一起,例子:(当返回值类型和参数为空时可以省略)

void(^ block2)(void)= ^void{

            NSLog(@"将声明和赋值写在一起");

        };

调用块:block2();


block的访问权限:

对于普通变量,在block中只能对其进行访问,而不能更改,要想对其更改,需要在外部变量名前加__block.注意:是两个下划线。


block可以作为函数的参数:

 

block:

block是用来保存代码的。  block的标志:^。不是普通的代码块。

(一下都是官方的标准定义)

1.block封装了一段代码,可以在任何时候执行。(很像一个函数——可以保存代码,有参数,有返回值)

2.block可以作为函数参数或者函数的返回值,而其本身又可以带参数和返回值。苹果官方建议多使用block

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值