---------------------------------------- android培训、java培训、期待与您交流! ---------------------------------
一、block初识
Block 是iOS在4.0之后新增的程式语法,
1、用法:用来保存一段代码
2、标志:^
3、block跟函数很像:
1)可以保存代码
2)有返回值
3)有形参
4)调用方式一样
二、掌握block的知识点
1、如何定义block变量
//int为返回值,参数为两个int类型的sumBlock的 block
int (^sumBlock)(int, int);
//无返回,无参数的myBlock的 block代码
void (^myBlock)();
2、 如何利用block封装代码
//1)带有两个int类型的参数a、b
^(int a, int b) {
return a - b;
};
//2)无参的代码形式,无参括号可以省略
^() {
NSLog(@"----------");
};
//无参括号可以省略
^ {
NSLog(@"----------");
};
3、block访问外面变量
* block内部可以访问外面的变量
* 默认情况下,block内部不能修改外面的局部变量
* 给局部变量加上__block关键字,这个局部变量就可以在block内部修改
4、利用typedef定义block类型
typedef int (^MyBlock)(int, int);
// 以后就可以利用MyBlock这种类型来定义block变量
MyBlock block;
MyBlock b1, b2;
b1 = ^(int a, int b) {
return a - b;
};
MyBlock b3 = ^(int a, int b) {
return a - b;
};
三、代码示例(重点掌握block对方法块的封装,增强代码可读性)
#import <Foundation/Foundation.h>
//利用typedef定义block类型,以后就可以利用MyBlock这种类型来定义block变量
typedef int (^MyBlock)(int, int);
int main(){
//定义一个MyBlock类型的sumBlock
MyBlock sumBlock;
//sumBlock代码块的实现,加法返回a+b的值
sumBlock = ^(int a, int b) {
return a + b;
};
//同理实现减法
MyBlock minusBlock = ^(int a, int b) {
return a - b;
};
//同理实现乘法
MyBlock multiplyBlock = ^(int a, int b) {
return a * b;
};
//使用代码块,打印输出
NSLog(@"%d - %d - %d", multiplyBlock(2, 4), sumBlock(10 , 9), minusBlock(10, 8));
return 0;
}
-------------------------------------- android培训、java培训、期待与您交流! ---------------------------------