美文网首页
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的简单使用

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

  • iOS-Block本质

    iOS-Block本质 参考篇:iOS-Block浅谈[https://www.jianshu.com/p/25a...

  • iOS-block的使用

    iOS中block比较常用,但是又和OC的语法显得有点格格不入,难于理解。 以下是我个人初步的理解,供查阅。 1....

  • Objective-C的本质(6)——Block本质

    参考:iOS-Block本质iOS底层原理总结 - 探寻block的本质(一)iOS底层原理总结 - 探寻bloc...

  • iOS-Block的使用你看我啊

    为什么题目是“Block的使用你看我啊”,而不是牛逼哄哄的“Block你看我就够了”,原因是本文并不会讲解Bloc...

  • iOS-Block的使用你看我啊

    为什么题目是“Block的使用你看我啊”,而不是牛逼哄哄的“Block你看我就够了”,原因是本文并不会讲解Bloc...

  • iOS-Block使用及注意点

    Block定义 块与函数相似,是可以获取其他函数局部变量的匿名函数。 Block写法 (1) 无参数void(^b...

  • iOS-block

    一. 查看block内部实现 1.编写block代码void (^DemoBlock)(int, int) = ^...

  • ios-Block

    概述: 能够截取自动变量的匿名函数 指向函数的指针 结构体 oc对象 使用: - 声明 - 定义(变量赋值) - ...

  • iOS-Block

    Block是一种匿名函数,也是一种Objective-C对象。 语法 返回值和参数列表都可以省略 声明 block...

网友评论

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

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