static NSInteger num3 = 300;
NSInteger num4 = 3000;
- (void)blockTest
{
NSInteger num = 3;
static NSInteger num2 = 30;
__block NSInteger num5 = 30000;
NSMutableArray * arr = [NSMutableArray arrayWithObjects:@"1",@"2", nil];
void(^block)(void) = ^{
NSLog(@"%zd",num);
NSLog(@"%zd",num2);
NSLog(@"%zd",num3);
NSLog(@"%zd",num4);
NSLog(@"%zd",num5);
NSLog(@"%@",arr);
[arr addObject:@"4"];
};
num = 1;
num2 = 10;
num3 = 100;
num4 = 1000;
num5 = 10000;
[arr addObject:@"3"];
arr = nil;
block();
}
打印结果:
2021-04-10 22:19:31.919651+0800 BlockTest[6263:26179341] 3
2021-04-10 22:19:31.922387+0800 BlockTest[6263:26179341] 10
2021-04-10 22:19:31.922726+0800 BlockTest[6263:26179341] 100
2021-04-10 22:19:31.922795+0800 BlockTest[6263:26179341] 1000
2021-04-10 22:19:31.923339+0800 BlockTest[6263:26179341] 10000
2021-04-10 22:19:31.923814+0800 BlockTest[6263:26179341] (
1,
2,
3
)
本文通过一个具体的Objective-C代码示例,展示了如何使用Blocks来捕获和操作局部变量。通过对不同类型的变量(如自动变量、静态变量和__block变量)进行修改,并观察Block执行时的输出变化,深入探讨了Blocks的工作机制及其对内存的影响。
3万+

被折叠的 条评论
为什么被折叠?



