1、问:什么是Block?
Block是将函数及其执行上下文封装起来的对象
Block的调用,既是函数的调用
可以使用 clang -rewrite-objc file.m来查看block编译之后的文件内容
block目录 image.png
其中连同所有权修饰符一起截获指的是:如果对象是用__unsafe_unretained和__strong修饰的,那么连这两个词也一块截获。
__unsafe_unretained id unsafe_obj;
__strong id strong_obj;
__block修饰符
一般情况下,对被截获变量进行赋值操作需添加 __block修饰符
赋值 != 使用
image.png上面代码可以正常执行
array是局部变量,会被捕获进去,捕获进去的是NSMutableArray *array,array是指针变量,array本身不可以做修改,但是array指针指向的变量可以修改,也就是[array addobject:@123]没有问题
上面代码不可以执行
array = [NSMutableArray array];要修改的是指针变量array本身存储的内容,是不可以的。
网友评论