IOS学习之路--BLOCK

时间:2023-03-09 08:27:15
IOS学习之路--BLOCK
/*
1.定义block变量:
返回值类型 (^block变量名) (参数类型1, 参数类型2, ....); 2.给block变量赋值
block变量名 = ^(参数类型1 参数名称1, .....)
{ };
*/ /*
1.设置动画属性 2.开始执行动画 3.动画执行完毕 block1 = ^{
封装了动画开始执行前想做的事情
}; block2 = ^{
封装了动画执行完毕后想做的事情
};
*/ #import <Foundation/Foundation.h> //typedef int MyInt; // MyBlock其实就是新的数据类型名称
typedef int (^MyBlock)(int, int); /*
需要掌握:
1.定义block变量
2.给block变量赋值
3.type和block的应用
*/ int main(int argc, const char * argv[])
{
MyBlock minus = ^(int a, int b)
{
return a - b;
};
int d = minus(,);NSLog(@"d id %d", d); MyBlock sum = ^(int v1, int v2)
{
return v1 + v2;
}; int e = sum(, );
NSLog(@"e is %d", e); /*
int (^minusBlock) (int, int) = ^(int a, int b){
return a - b;
};
minusBlock(10, 5); int (^averageBlock) (int, int) = ^(int a, int b)
{
return (a+ b)/2;
};*/ return ;
} void test2()
{
int a = ; __block int b = ; // block内部不能修改默认的局部变量
// 定义一个block变量
void (^block) () = ^{
//a = 11;
b = ;
NSLog(@"b=%d", b);
}; block();
block();
block();
} void test()
{
// 左边的void:block没有返回值
// 最右边的() :没有参数
// 中间的(^) block的标志,不能少
void (^myblock)() = ^{
int a = ;
int b = ;
NSLog(@"a=%d, b=%d", a, b);
};
myblock(); // 定义一个block变量,变量名是sumBlock
// 最左边的int:block的返回值是int类型
// 最右边的(int, int) block接受两个int类型的参数
int (^sumBlock)(int, int);
sumBlock = ^(int v1, int v2){
return v1 + v2;
}; int sum = sumBlock(, );
NSLog(@"sum=%d", sum);
}