iOS block捕获变量

博客介绍了block的变量捕获机制,针对全局变量、局部变量和静态局部变量,分别阐述了其在block底层数据结构中的捕获情况及使用方式。指出局部变量因内存可能销毁被值捕获,静态局部变量因内存不销毁被地址捕获,全局变量可直接访问不被捕获。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了保证block内部能够正常访问外部的变量,block有个变量捕获机制,下面我们就来看看,block针对不同类型的变量是怎样进行捕获的:

 x:全局变量

  i:局部变量

  j:静态局部变量

我们来看三种类型变量在block底层数据结构中的捕获情况:

 x:全局变量,未捕获

  i:局部变量,值捕获

  j:静态局部变量,地址捕获

变量的使用:

       

 x:全局变量,直接访问

  i:局部变量,从block结构体中直接获取该属性的值

  j:静态局部变量,从block结构体中获取该属性的地址,再由地址获取值

结论

        由于局部变量的内存可能会被销毁,所以block会捕获局部变量的值

        静态局部变量的内存在程序运行期间不会被销毁,所以block会捕获静态局部变量的地址

        由于全局变量可以直接访问,所以block不会捕获全局变量

        

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值