gpt4 book ai didi

iphone - 使用 GCD 创建循环

转载 作者:太空狗 更新时间:2023-10-30 04:00:23 25 4
gpt4 key购买 nike

这就是我得到的:

  dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.1*NSEC_PER_SEC), dispatch_get_current_queue(), ^{
bool ready = some_function();
if( ready ) {
do_smth_here()
} else {
//invoke this block one more time after 0.1 sec
}
});

问题是如何获取当前 block 的引用?

最佳答案

我通常会声明一个我可以调用的实例方法,而不是跳过上面显示的步骤,在内部处理必要的重新触发。这样,任何给定的 block 都是一次性的,但重新触发会创建一个新 block 。

只要 block 的创建不是非常昂贵——如果状态来自封装实例方法的任何东西就不会如此——它就足够高效并且简单得多。

- (void) retriggerMethod
{
... do stuff here, assuming you want to do it on first invocation ...
dispatch_after( ..., ^{
[self retriggerMethod];
});
}

您可以根据需要对其进行重组。如果您想防止同时重新触发等,您可以轻松添加一个 BOOL 实例变量......

这也提供了一个方便的取消钩子(Hook);只需向实例添加一个 BOOL,指示下一次调用是否真的应该做任何事情并重新安排。

关于iphone - 使用 GCD 创建循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10998476/

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