• OC中block作方法参数时的用法


    方式一、在传参时直接声明block回调方法。

    1. 定义方法:

    - (int)doTest:(NSString *)name para1:(int)temp1 para2:(int)temp2 success:(int (^)(int param1, int param2))success

    {

        int ret = success(temp1, temp2);

        NSLog(@"----%@ -- %d--", name, ret);

        return ret;

    }

    2. 调用方法:

        [self doTest:@"Tom" para1:8 para2:15 success:^int(int param1, int param2) {   // 调用 doTest的时候,这个红色的block在 doTest 中马上就会调用(见上面蓝色代码)。

            return param1 + param2; 

        } ];

    ====================================================

     ////1. 定义方法:
    //- (void)doTest:(NSString *)name para1:(int)temp1 para2:(int)temp2 success:(int (^)(int a, int b))success
    //{
    //    
    //    
    //    NSLog(@"----temp1=%d -- temp2=%d--", temp1, temp2); // temp1=33; temp2=44;
    //    
    //    success(11, 22);
    //}
    //
    //- (void)viewDidLoad {
    //    [super viewDidLoad];
    //    
    //    
    //    //2. 调用方法:
    //    [self doTest:@"Tom" para1:33 para2:44 success:^int (int a, int b) { // 调用 doTest的时候,这个红色的block在 doTest 中马上就会调用(见上面蓝色代码)。
    //        
    //        NSLog(@"---a=%d -- b=%d--", a, b); // a=11; b=22;
    //        
    //        return 0;
    //    }];
    //    
    //}

    ===========================================

    方式二、用typedef定义一个block别名,在参数中用别名声明参数是block类型。

    1. 声明一个block方法的类型:

         typedef int (^myBlock)(int a, int b);

    2. 定义方法:

    - (int)doTest:(NSString *)name para1:(int)temp1 para2:(int)temp2 success:(myBlock)success

    {

        NSLog(@"----temp1=%d --temp2=%d--", temp1, temp2); // temp1=55;   temp2=66;

        int ret = success(33, 44);

        return ret;

    }

    3. 调用方法:

        [self doTest:@"Tom"  para1:55 para2:66 success:^int(int a, int b) {

        NSLog(@"----a=%d -- b=%d--", a, b);  // a=33; b=44;

            return 1;

        }];

  • 相关阅读:
    全景拼接
    krpano之字幕添加
    UML之时序图
    krpano之语音介绍
    小工具之录音(文字转语音)
    动态生成按钮的点击事件绑定
    登录之简单验证码
    登录之md5加密
    redis与mysql数据同步
    Sql Server 主从数据库配置
  • 原文地址:https://www.cnblogs.com/nxz-diy/p/5287757.html
Copyright © 2020-2023  润新知