block与C语言函数指针的区别

block是带有自动变量值的匿名函数。




1、函数指针是对一个函数地址的引用,这个函数在编译的时候就已经确定了。而block是一个函数对象,是在程序运行过程中产生的。在一个作用域中生成的block对象分配在栈(stack)上,和其他所有分配在栈上的对象一样,离开这个作用域,就不存在了。



2、blocks是inline的,并且它对局部变量是只读的。如果要修改就要加关键字:__block (注意,是两个下划线)。


3、作为函数的参数,blocks某种意义上替代了回调函数或者delegate。当函数调用了,假设某个事件触发,这时blocks里的内容就会运行。这样有利于代码的整合和阅读,你不需要到处去实现委托方法了。


上一篇:IMAX入局VR内容,打造更棒的观影效果


下一篇:SSM-SpringMVC-12:SpringMVC中BeanNameViewResolver这种视图解析器