OC语言day06-13Block和typedef结合使用

pragma mark Block和typedef结合使用

pragma mark 概念

/**
 #pragma mark 1.使用typedef 定义 指向函数的指针
 typedef int (*calculte)(int,int);// 只要是返回int 带有两个参数的都可以使用
 
 #pragma mark 2.使用typedef 为 Block 起别名
 // 注意: 利用typedef给block起别名, 和指向函数的指针一样,block变量的名称 就是别名
 typedef int (^calculteBlock) (int,int);
 
 */

pragma mark 代码

#import <Foundation/Foundation.h>
#pragma mark 类

#pragma mark 加减法函数
int sum (int value1, int value2)
{
    return value1 + value2;
}

int minus (int value1, int value2)
{
    return value1 - value2;
}

#pragma mark 1.使用typedef 定义 指向函数的指针
typedef int (*calculte)(int,int);// 只要是返回int 带有两个参数的都可以使用

#pragma mark 2.使用typedef 为 Block 起别名
// 注意: 利用typedef给block起别名, 和指向函数的指针一样,block变量的名称 就是别名
typedef int (^calculteBlock) (int,int);


#pragma mark main函数
int main(int argc, const char * argv[])
{
#warning 1.加法 指向函数的指针
    // 定义一个 指向函数 的 指针
    int (*sumP)(int,int);
    // 指针 指向函数
    sumP = sum;
    // 通过指针 调用函数
    NSLog(@"sum = %i",sumP(30,10));
          
#warning 2.减法 指向函数的指针
    // 定义一个 指向函数 的 指针
    int (*minusP)(int,int);
    // 指针 指向函数
    minusP = minus;
    // 通过指针 调用函数
    NSLog(@"minus = %i",minusP(25,10));
    
#warning 3.使用typedef 定义指向函数的指针(加法) (缩短了定义 指向函数的指针)
    // 定义一个 指向函数 的 指针 并且 指向了函数
    calculte sumP1 = sum;
    // 通过指针 调用函数
    NSLog(@"sum1 = %i",sumP1(40,10));

#warning 4.使用typedef 定义指向函数的指针(减法) (缩短了定义 指向函数的指针)
    // 定义一个 指向函数 的 指针 并且 指向了函数
    calculte minusP1 = minus;
    // 通过指针 调用函数
    NSLog(@"minus1 = %i",minusP1(40,10));

#pragma mark Block
#warning 1.加法Block
    int (^sumBlock) (int,int);
    sumBlock = ^(int value1,int value2){
        return value1 + value2;
    };
    NSLog(@"sumBlock = %i",sumBlock(33,22));
    
#warning 2.减法Block
    int (^minusBlock) (int,int);
    minusBlock = ^(int value1,int value2){
        return value1 - value2;
    };
    NSLog(@"minusBlock = %i",minusBlock(33,22));

#warning 3.使用typedef 给Block起别名 (加法)
    calculteBlock sumBlock1  = ^(int value1,int value2){
        return value1 + value2;
    };
    NSLog(@"sumBlock1 = %i",sumBlock1(44,22));

#warning 3.使用typedef 给Block起别名 (减法)
    calculteBlock minusBlock1  = ^(int value1,int value2){
        return value1 - value2;
    };
    NSLog(@"minusBlock1 = %i",minusBlock1(44,22));
    return 0;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容