Objective c 目标c:如何在低层上创建块,成本是多少?

Objective c 目标c:如何在低层上创建块,成本是多少?,objective-c,objective-c-blocks,Objective C,Objective C Blocks,找不到详细说明 它是一个对象还是一个函数 它是在运行时按需创建的,还是在编译时或加载阶段创建的 它们的创建位置:堆上还是堆栈上 调用过程和顺序是什么 它是一个对象还是一个函数 两者都有;块实际上是一个捕获的状态位,它也可以像函数一样调用。编译器相互勾结,使其对象部分大部分透明(尤其是使用ARC) 它是在运行时按需创建的,还是在编译时或加载阶段创建的 运行时或编译时,具体取决于块 不捕获任何状态的块可以在编译时完全创建。捕获只有在运行时才能知道的状态的块将在运行时创建 它们的创建位置:堆上还是堆栈

找不到详细说明

它是一个对象还是一个函数

它是在运行时按需创建的,还是在编译时或加载阶段创建的

它们的创建位置:堆上还是堆栈上

调用过程和顺序是什么

它是一个对象还是一个函数

两者都有;块实际上是一个捕获的状态位,它也可以像函数一样调用。编译器相互勾结,使其对象部分大部分透明(尤其是使用ARC)

它是在运行时按需创建的,还是在编译时或加载阶段创建的

运行时或编译时,具体取决于块

不捕获任何状态的块可以在编译时完全创建。捕获只有在运行时才能知道的状态的块将在运行时创建

它们的创建位置:堆上还是堆栈上

两者都有;实际上,堆栈、堆或静态RO映射内存(即编译时块)

块(捕获状态)通常在堆栈上创建,然后在第一个Block_copy()操作中提升到堆

调用过程和顺序是什么


不清楚你在问什么。块的调用就像C函数一样,其中第一个参数始终是对块对象的引用,提供了一个钩子来获取捕获的状态。

您的问题是可以的,但不是关于代码问题,而是关于理论,你可以在Clang网站上找到这方面的所有信息,或者你需要改进这个问题才能得到一个好的答案