黑马程序员技术交流社区

标题: block和函数的区别 [打印本页]

作者: xiniuniu    时间: 2014-8-25 16:23
标题: block和函数的区别
本帖最后由 xiniuniu 于 2015-4-18 09:33 编辑




函数调用时,会分配一定的栈空间来存储参数或函数内局部变量。并跳转到函数代码处执行指令,执行完成后再跳回到原来调用函数指令的下一行继续执行。

而block代码则是在调用处直接生成相关代码,不用开辟栈空间和跳转,所以相比函数调用来说要效率一些。但同样,调用block越多,则占用的内存空间越多,所以一些短小的程序多可写成block代码。C++中内联函数也是这样分配的,OC中block的概念和C++中的内联函数是一样的!
又重新分析了下,block, 看来以前对block的理解是不太正确的, 新的理解见 __block int i 和 int i 的区别




作者: 泠风小和    时间: 2014-8-31 19:20
block编译时,类似宏替换,使用函数体替换调用处的函数名。
作者: 冯大卫    时间: 2014-8-31 23:34
学习了 谢谢楼主




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2