gpt4 book ai didi

ios - 取消完成 block

转载 作者:搜寻专家 更新时间:2023-10-30 22:34:21 25 4
gpt4 key购买 nike

快速提问。

通常,我们进行网络调用并在获得响应时,我们在完成 block 中返回数据,如下所示

func someAPIcall(input: input, completion: (result: data) -> Void) {
...
completion(data)
}

我使用下面的函数

someAPIcall(input) {
(result: data) in
print(result)
// Update UI, etc
}

是否有可能在以后的任何时间点以某种方式取消完成 block ?比如说,如果我立即进行网络调用和 popViewController,尽管如果我取消 request,但如果数据返回到完成 block ,则会执行完成任务。

是否有任何机制可以将 var 分配给闭包并稍后取消它?

我如何在需要时取消 block 的执行,比如在 viewWillDisappear 中?

最佳答案

你不一定要从存在中删除完成 block ,但由于它是你的完成 block ,你可以很容易地在它被调用时不做任何事情:

func someAPIcall(input: input, completion: (result: data) -> Void) {
guard somethingOrOther else {return}
// ...
completion(data)
}

somethingOrOther 可能是 self 的一个属性,或者(如您所知)您可能会检查 self 是否仍然存在.

这与 NSOperation 使用的机制没有太大区别,它可以在实际执行任何操作之前检查自己的 cancelled 属性。

关于ios - 取消完成 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36934530/

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