今天在寫block的時候,發(fā)現(xiàn),在內(nèi)部修改可變數(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