iOS-block的简单使用

2020-03-13  本文已影响0人  Arthur澪

简介

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

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);
上一篇下一篇

猜你喜欢

热点阅读