/* 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(10,5);NSLog(@"d id %d", d); MyBlock sum = ^(int v1, int v2) { return v1 + v2; }; int e = sum(10, 11); 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 0; } void test2() { int a = 10; __block int b = 10; // block内部不能修改默认的局部变量 // 定义一个block变量 void (^block) () = ^{ //a = 11; b = 11; NSLog(@"b=%d", b); }; block(); block(); block(); } void test() { // 左边的void:block没有返回值 // 最右边的() :没有参数 // 中间的(^) block的标志,不能少 void (^myblock)() = ^{ int a = 11; int b = 11; 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(10, 11); NSLog(@"sum=%d", sum); }