有一种东西叫block,面试的时候貌似很重要。
一 简介
block是什么?苹果推荐的类型,效率高,在运行中保存代码。用来封装和保存代码,有点像函数,block可以在任何时候执行。
Block 是一种具有匿名功能的内嵌函数。
可以这么说么,block是一种有匿名功能的苹果推荐的,效率高可以在运行中保存代码的内嵌函数。(可不可以这么说呢)
block和函数的相似性:(1)可以保存代码(2)有返回值(3)有形参(4)调用方式一样
标识符 ^
二 基本使用
(1)定义block变量
int(^sumblock)(int,int);//有参数,返回值类型为int
void(^myblock)();//无参数,返回值类型为空
(2)利用block封装代码
(3)block访问外部变量
a.block内部可以访问外部变量;
b.默认情况下,block内部不能修改外部的局部变量
c.给局部变量加上__block关键字,则这个局部变量可以在block内部进行修改。
(4)利用typedef定义block类型(和指向函数的指针很像)
Typedef int(^myblock)(int,int);
以后就可以利用这种类型来定义block变量了。
myblock a,b;
a = ^(int a,int b){return a-b;};
myblock b2 = ^(int n1,int n2){return n1*n2;};