美文网首页
block探究之数组

block探究之数组

作者: 至尊宝_4233 | 来源:发表于2021-07-06 15:18 被阅读0次

今天在写block的时候,发现,在内部修改可变数组的时候,是不需要添加任何修饰的。如下:

NSMutableArray *arr = [NSMutableArray array];
        [arr addObject:@"1"];
        void(^block)(void) = ^{
            [arr addObject:@"2"];
            NSLog(@"%@",arr);
        };
        block();

但是,在修改不可变数组(NSArray)是必须添加__block的。

__block NSArray *arr1 = [NSArray array];
        arr1 = @[@"cc"];
        void(^block)(void) = ^{
            arr1 = @[@"cvv"];
            NSLog(@"%@",arr1);
        };
        block();

如果不写,编译器是直接报错了。

__block对不可变数组做修改时进行了深拷贝。可变数组本来就是可以改变的。

block 经典题目:https://juejin.cn/post/6844904041474949133

相关文章

  • block探究之数组

    今天在写block的时候,发现,在内部修改可变数组的时候,是不需要添加任何修饰的。如下: 但是,在修改不可变数组(...

  • Objective-C底层探究之block(二)

    Objective-C底层探究之block(一) 从前面我们知道了block调用其实就是函数的调用。block本身...

  • iOS开发之Block原理探究

    Block概述 Block本质 Block调用 Block分类 Block循环引用 Block原理探究 Block...

  • 探究Block之MethodSignature

    在iOS开发中,Block是常用的数据类型,Block的源码是开放的,对于Blcok的其他探究可以查看这篇文章深入...

  • block底层原理探究(二):内存管理

    前篇block底层原理探究(一):捕获,我们探究了block捕获外部变量的原理;如果block捕获的是对象类型的a...

  • Block 探究

    Block是OSX Snow Leopard和iOS 4引入的C语言扩充功能,是一个带有自动变量(局部变量)的匿名...

  • 探究 Block

    一、了解 Block先从一个简单的需求来说:传入两个数,并且计算这两个数的和,为此创建了这样一个block : 这...

  • Block探究

    使用clang -rewrite-objc main.m,得到编译后的c++源码,可以了解到 block也是一个结...

  • Block探究

    block的实质是什么?一共有几种block?都是什么情况下生成的? block的实质是什么? block本质上也...

  • Block探究

    block的原理是怎样?本质是什么? block本质上也是一个OC对象,block是封装了函数调用与及调用环境的O...

网友评论

      本文标题:block探究之数组

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