A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© san_ss 中级黑马   /  2016-1-14 12:41  /  701 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

与函数最大的区别:

函数是静态创建 动态运行. 不能在函数内定义函数.
block 是动态创建动态运行.  可以在函数内定义block 也可以在block内部定义block.

1.外部变量不加__block, 一边拷贝一份到block区. ,名字是一样的.值且不能改变.

2. 外部变量加了__block
    2,1  block内部访问了这个变量
          一旦执行到了block, 相当于创建了一个变量(剪切到了一个公共区).且之前的外部变量被替换(地址改变, 值没有改变).

    2.2 block内部没有访问这个变量
        对外部的变量没有影响, 跟没有加__block是一个效果.
    注意: block 对变量内存的改变跟这个block是否调用没有关系, 只创建依然起作用.



block可以当函数与方法的返回值.
但是: 如果当函数返回值的时候 必须用typedef 定义这个block的别名

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马