OC 学习第六天_Block的使用

来源:互联网 发布:匿名内部类java构造器 编辑:程序博客网 时间:2024/04/24 02:09

Block、数组⾼级

⼀、Block定义

Block简介
Block:块语法,本质上是匿名函数(没有名称的函数)
标准C⾥⾯没有Block,C语⾔的后期扩展版本,加⼊了匿名函
数。
C++、JS、Swift等语⾔,有类似语法,叫做闭包。
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
Blcok
匿名函数:没有名称的函数。
例如 int (int x, int y)
没有名称的函数应该如何调⽤?(有名称的话,可以直接调⽤,也
可以通过函数指针来调⽤)
Blcok
匿名函数:没有名称的函数。
例如 int (int x, int y)
没有名称的函数应该如何调⽤?(有名称的话,可以直接调⽤,也
可以通过函数指针来调⽤)
因为Block是匿名函数,block变量存放的函
数的实现,通过block变量能直接调⽤函数
Blcok语法
Block详细
Block类型:int (^)(int)
Block变量:myBlock
Block值:^ int (int num){ return 7 * num;}
即:^ 返回值类型 (参数列表){函数体} 其中 返回值类型 可以
省略。
练习⼀
写⼀个 返回值为整型 参数为NSString(仅⼀个参
数)的block,实现将字符串转换为整型的功能。

int (^stringChangeToInt)(NSString *) = ^int (NSString *str)    {        int a = [str intValue];        return a;    };    NSLog(@"%d",stringChangeToInt(@"15"));

输出结果:15

⼆、Block使⽤
Block使⽤
int (^block1)(int x,int y) = ^(int x,int y){
return x + y;
};
int a = block1(32 , 34);//block的使⽤和函数指针的使⽤类似。
NSLog(@“%d”,a);
打印结果:66
Block进⾏typedef
typedef int (^BlockType)(int x,int y)
原类型:int (^)(int x,int y)
新类型:BlockType
Block写法
int (^block1)(int x,int y) = ^(int x,int y){
return x + y;
};
等价于
BlockType block1 = ^(int x,int y){
return x + y;
};
Block与局部变量
block内部不能修改局部变量
Block与局部变量
__block修饰后可以修改局部变量(双下划线)
Block与全局变量
可以修改
三、Block与数组排序
数组使⽤Block排序
运⾏结果
对Student对象排序
students是⼀个NSMutableArray对象,包含若干个Student对象。按
student的age进⾏排序。
[students sortUsingComparator:^NSComparisonResult(id obj1,id obj2){
Student stu1 = (Student )obj1;
Student stu2 = (Student )obj2;
if([stu1 age] > [stu2 age]){return NSOrderedDescending;}
else if([stu1 age] < [stu2 age]){return NSOrderedAscending;}
else {return NSOrderedSame;}
}];

六、iOS中的 字⾯量
字⾯量的概念
Literals (字⾯量),是⼀种简易表⽰值的⽅法。
iOS提供了⼀些内的字⾯量语法,简化创建过程。
字⾯量
总结
block是苹果最推崇的语法,iOS4.0之后的类都添加了block⽀
持。block通常当参数来使⽤。
字⾯量是⼀种新型的写法,能在⼀定程度上简化代码。
字⾯量创建的对象是便利构造的,且是不可变的。

1 0
原创粉丝点击