今天在寫block的時候,發(fā)現(xiàn),在內部修改可變數(shù)組的時候,是不需要添加任何修飾的。如下:
NSMutableArray *arr = [NSMutableArray array];
[arr addObject:@"1"];
void(^block)(void) = ^{
[arr addObject:@"2"];
NSLog(@"%@",arr);
};
block();
但是,在修改不可變數(shù)組(NSArray)是必須添加__block的。
__block NSArray *arr1 = [NSArray array];
arr1 = @[@"cc"];
void(^block)(void) = ^{
arr1 = @[@"cvv"];
NSLog(@"%@",arr1);
};
block();
如果不寫,編譯器是直接報錯了。
__block對不可變數(shù)組做修改時進行了深拷貝??勺償?shù)組本來就是可以改變的。
block 經(jīng)典題目:https://juejin.cn/post/6844904041474949133