笔记整理

[ 1 ] block

1,
普通的局部变量声明后,给block内部使用的话
block内部只会引用它的初始值(block定义的那一刻),block不能跟踪局部变量的改变
block会在定义的那一刻,就直接获得外部局部变量的值,以后都不会变;

即 block括号内获得的输出值只会永远是从上面获得的int age = 10; 下面再对age如何赋值毫无影响

2
加上 下划线 __block修饰的block就不一样了,block方法内部会一直引用被__block修饰的变量; 这是让block获取到变量的方法

这里写图片描述

3
用static修饰的变量
block也能一直访问该age变量, 因为用static修饰了,这个局部变量就会变成了静态变量,会一直存在内存中,所以block能一直访问到这个变量,跟踪它的变化; 而不加修饰声明的普通局部变量,声明之后就会死掉., 如果在外边在调用block,就会访问不到这个变量, 所以为了防止这种情况出错,block在用普通的局部变量的时候就会直接把值定死,不会再变化;

这里写图片描述

4

block引用 全局变量,

num声明在block方法外部,是一个全局变量, 会一直存在于内存中, block就也能一直访问到它的变化

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值