gpt4 book ai didi

Objective-C block ,递归失败

转载 作者:可可西里 更新时间:2023-11-01 03:27:27 26 4
gpt4 key购买 nike

伙计们,

我正在尝试做一个调用自身的函数,但是通过将所有内容放在一个 block 上,

如您所见,以下函数旨在无限次调用(直到 arcrandom 返回一个小于 50 的数字),并且您应该期望输出可变数量的“RUNNING”消息,具体取决于机会.

void (^_test_closure)(void) = ^ {
NSLog(@"RUNNING");
if(arc4random() % 100 > 50) {
_test_closure();
}
};

_test_closure();

但是,在运行它时,我收到一个 EXC_BAD_ACCESS 错误,我发现的原因是当代码试图在闭包内部调用 _test_closure 时,它​​基本上指向任何地方。

有谁知道如何使上面的代码工作?

最佳答案

您必须将 block 本身声明为 block 变量:

__block void (^_test_closure)();


_test_closure = ^{
NSLog(@"Running...");
if ((arc4random() % 100) > 50) {
_test_closure();
}
}

_test_closure();

关于Objective-C block ,递归失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12133907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com