首页 > 代码库 > IOS学习之路--BLOCK

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(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);}