block的使用(二)

坚强是说给别人听的谎言 提交于 2019-12-10 05:41:29

typedef int INT; // int定义别名INT

typedef int ARR[4]; ARR a1;//定义了一个长度为4的整形数组

//typedef  定义类型

// typedef 给基本数据类型 构造类型 枚举类型 函数指针 起别名

// 函数指针: 指向函数的指针


#import <Foundation/Foundation.h>


int sum(int a,int b){

    return a+b;

}


int main(int argc, const char * argv[]) {

    @autoreleasepool {

        // 调用函数

        int s1 = sum(10, 119); // 函数名存储的是函数的首地址

        NSLog(@"%d",s1); // 129

        // 函数指针p,p指向的是sum函数的首地址

        int (*p)(int a, int b);

        p = sum; // p赋初始值

        int s2 = (*p)(10,119);

          NSLog(@"%d",s2); // 129

        

        typedef int (*p1)(int a, int b); //给返回值是int并且有2个参数的函数起别名,别名是p1p1是一种类型

        

        // 定义无参无返回值的block变量

        void (^block1)(); // block1是一个返回值是void没有参数的block变量

        block1 = ^{

            NSLog(@"hahah");

        };

        

        // 使用typedef

        typedef void(^block2)(); // 给返回值是void 没有参数的代码块起一个别名,别名是block2

//        block2 = ^{

//            NSLog(@"222");

//        };   会报错

        

        block2 bb; // bb是一个block变量

        bb = ^{

            NSLog(@"bb");

        };

        

        bb();

        

        // 给有参数没有返回值的block起别名

        typedef void(^blockType)(int); // blockType 是一个类型

        blockType b1;

        b1 = ^(int a) {

            NSLog(@"a = %d",a);

        };

        

        b1(10);

        

        // 给有参数有返回值的block起别名

        

        typedef int(^blockType2)(int ,int);

        blockType2 b2 = ^ (int x,int y) {

            return x + y;

        };

        

        int sum = b2(10,5);

        NSLog(@"%d",sum);

    }

    return 0;

}


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!