找不到详细的说明。
是对象还是函数?
是在运行时按需创建还是在编译时或加载阶段创建的?
创建它们的位置:是在堆上还是在堆栈上?
调用程序和顺序是什么?
答案 0 :(得分:2)
是对象还是函数?
两者;块实际上是捕获的状态位,也可以像函数一样调用。编译器会合在一起使它的 object 部分大部分透明(尤其是使用ARC)。
是在运行时按需创建还是在编译时或加载阶段创建的?
运行时或编译时,取决于块。
一个不能捕获任何状态的块可以在编译时完全创建。会在运行时创建一个捕获只能在运行时知道的状态的块。
创建它们的位置:是在堆上还是在堆栈上?
两者;确实是堆栈,堆或静态RO映射的内存(即编译时间块)。
通常在堆栈上创建块(捕获状态),然后在第一个Block_copy()操作上将其提升到堆上。
调用程序和顺序是什么?
不清楚您在这里问什么。就像C函数一样调用块,在C函数中,第一个参数始终是对块对象的引用,从而提供了一个钩子来捕获捕获的状态。