objective-c:如何在低级别创建块并以何种成本创建块?

问题描述 投票:1回答:1

找不到详细说明。

它是一个对象还是一个功能?

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

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

什么是调用程序和顺序?

objective-c objective-c-blocks
1个回答
2
投票

它是一个对象还是一个功能?

都;块实际上是捕获的状态位,也可以像函数一样调用。编译器串起来使对象的一部分大部分是透明的(特别是使用ARC)。

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

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

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

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

都;实际上,堆栈,堆或静态RO映射内存(即编译时间块)。

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

什么是调用程序和顺序?

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

© www.soinside.com 2019 - 2024. All rights reserved.