这个问题在这里已经有了答案:
Best Answer-推荐答案 strong>
您可以在将 block 存储在数组中时使用 Block_copy
函数将 block 移动到堆中,并在完成后使用 Block_release
函数。 Block_copy
会将执行 block 变量移动到堆中,这样当您继续运行应用程序时,变量不会在堆栈内存中被覆盖。
使用 Block_copy 的示例。你需要先做一个桥接 Actor
像这样在你的标题中为你的 block 类型定义一个 typedef。此类型示例没有参数。
typedef void (^myBlockType)();
当你想向数组中添加一个 block 时,你可以像这样复制 block :
- (void)addBlockvoid (^)())aBlock
{
[mutableBlockArray addObject__bridge myBlockType)Block_copy((__bridge void *)aBlock)];
}
当你完成 block 后,你需要像这样释放它(对于 ARC 不是必需的):
id finishBlock = [mutableBlockArray objectAtIndex:index]
Block_release((__bridge void *)finishBlock);
关于ios - 是否可以将一系列 block 代码存储在一个数组中并在需要时执行它?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/13462045/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) |
Powered by Discuz! X3.4 |