OC中Block的底层实现

218 阅读1分钟

这个问题困扰了我很久了。今天决定写出来,让自己最近所学的知识有个总结。第一次用掘金,还不太习惯。先发一个看看。

1、Block是什么

1.1 block是OC对象

block实践

1.2 block是一个指向结构体的指针

1.2.1 clang

图片

1.2.2 几个结构体
1.2.3 构造函数

1.3 block是一个指向结构体的指针

2、Block能做什么

常用的异步回掉

替换代理

3、Block有几种类型

3种类型

4、使用Block要注意什么

注意循环引用

测试代码

- (void)test{
    int age = 10;
    
    void (^block1)(void) = ^{
        NSLog(@"-----");
    };
    NSLog(@"block1的类:%@",[block1 class]);
    
    NSLog(@"block2的类:%@",[^{
        NSLog(@"----%d",age);
    } class]);
    
   NSLog(@"block3的类:%@",[[^{
       NSLog(@"----%d",age);
   } copy] class]);
}

再一次申明,这是我的第一次提交,一个小实验。没有给你们带来干货,不要见怪。后期逐步完善。