美文网首页
iOS-block的简单使用

iOS-block的简单使用

作者: Arthur澪 | 来源:发表于2020-03-13 10:25 被阅读0次

    简介

    闭包是一个函数(或指向函数的指针),再加上该函数执行的外部的上下文变量(有时也称作自由变量)。

    block 实际上就是 Objective-C 语言对于闭包的实现。

    block本质上也是一个OC对象,封装了函数调用以及函数调用环境,block内部也有个isa指针。

    简单定义和使用

    block定义的语法格式:

    返回值类型 (^名字)(参数1, 参数2...) = ^{
    
    }
    
    • 无参无返回值
    void (^MyBlockOne)(void) = ^{
        NSLog(@"xxx");
    };
        
    MyBlockOne();  // 调用
    
    • 无参有返回值
    int (^MyBlockTwo)(void) = ^{
        NSLog(@"xxx");
        return 12;
    };
    
    int age = MyBlockTwo();
    
    • 有参无返回值
    void (^MyBlockThree)(int a) = ^(int a){
        NSLog(@"a = %d", a);
    };
         
    MyBlockThree(10);
    
    • 有参有返回值
    int (^MyBlockFour)(int a) = ^(int a){
        NSLog(@"有参有返回值 a = %d",a);
        return a * 2;
    };
    
    int age = MyBlockFour(4);
    

    自定义block类型

    开发中,经常需要把block作为一个属性。就需要先自定义一个block类型。
    利用关键字typedef

    例如:定义一个有参有返回的block类型:

    typedef int (^PDReturnBlock)(int a, int b);
    
    typedef NSString* (^PDDblock)(int a) ;
    
    • 开发中使用时

    1.声明一个block类型的属性:

    @property (nonatomic,copy)PDReturnBlock myBlock;
    

    2.定义block类型的属性:

    self.myBlock = ^int(int a, int b) {
        return a + b;
    };
    
    self.ablock = ^NSString *(int a) {
        return @"x";
    };
    

    3.调用block属性:

    int a = self.myBlock(2, 5);
    

    相关文章

      网友评论

          本文标题:iOS-block的简单使用

          本文链接:https://www.haomeiwen.com/subject/gwvfshtx.html