我正在使用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 = ^
?答案 0 :(得分:11)
要宣布您的阻止,您将使用
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);
}
这就是为什么插入分号的原因。
为什么它在没有分号的情况下给出错误:您在其自己的声明/赋值中引用了块。您正在“dispatch_after”调用中使用它,但尚未完全设置。