本帖最后由 xiniuniu 于 2015-4-18 09:33 编辑
函数调用时,会分配一定的栈空间来存储参数或函数内局部变量。并跳转到函数代码处执行指令,执行完成后再跳回到原来调用函数指令的下一行继续执行。
而block代码则是在调用处直接生成相关代码,不用开辟栈空间和跳转,所以相比函数调用来说要效率一些。但同样,调用block越多,则占用的内存空间越多,所以一些短小的程序多可写成block代码。C++中内联函数也是这样分配的,OC中block的概念和C++中的内联函数是一样的!
又重新分析了下,block, 看来以前对block的理解是不太正确的, 新的理解见 __block int i 和 int i 的区别
|