黑马程序员技术交流社区

标题: 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