gpt4 book ai didi

ios - block 指针变量 'block' 在被 block 捕获时未初始化

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:54:34 26 4
gpt4 key购买 nike

我正在使用看到的代码 here定期执行代码:

#define DELAY_IN_MS 1000
__block dispatch_time_t next = dispatch_time(DISPATCH_TIME_NOW, 0);
void (^block)(void) = ^ // Get warning here!
{
next = dispatch_time(next, DELAY_IN_MS * 1000000L);

// Do my periodic thing ...

dispatch_after(next, dispatch_get_main_queue(), block);
}

这会导致警告(见标题)。我对这个警告有两个问题:

  • 这是什么意思?
  • 为什么当我写:void (^block)(void); 时警告消失了? block = ^?

最佳答案

只需声明您将使用的 block

void (^block)(void); 

然后用

初始化它
block =^  // Get warning here!
{
next = dispatch_time(next, DELAY_IN_MS * 1000000L);

// Do my periodic thing ...

dispatch_after(next, dispatch_get_main_queue(), block);
}

这就是输入分号有效的原因。

为什么它在没有分号的情况下给你一个错误:你在它自己的声明/赋值中引用 block 。您正在“dispatch_after”调用中使用它,但尚未完全设置。

关于ios - block 指针变量 'block' 在被 block 捕获时未初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18095468/

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