黑马程序员技术交流社区
标题:
block 访问外部变量内存分析
[打印本页]
作者:
san_ss
时间:
2016-1-14 12:41
标题:
block 访问外部变量内存分析
与函数最大的区别:
函数是静态创建 动态运行. 不能在函数内定义函数.
block 是动态创建动态运行. 可以在函数内定义block 也可以在block内部定义block.
1.外部变量不加__block, 一边拷贝一份到block区. ,名字是一样的.值且不能改变.
2. 外部变量加了__block
2,1 block内部访问了这个变量
一旦执行到了block, 相当于创建了一个变量(剪切到了一个公共区).且之前的外部变量被替换(地址改变, 值没有改变).
2.2 block内部没有访问这个变量
对外部的变量没有影响, 跟没有加__block是一个效果.
注意: block 对变量内存的改变跟这个block是否调用没有关系, 只创建依然起作用.
block可以当函数与方法的返回值.
但是: 如果当函数返回值的时候 必须用typedef 定义这个block的别名
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2