gpt4 book ai didi

iphone - 如何在 View 释放时安全地取消 ASINetworkQueue 中的所有请求

转载 作者:行者123 更新时间:2023-11-29 04:50:34 26 4
gpt4 key购买 nike

我有 ASINetworkQueue,其中有超过 1500 个请求。执行如此数量的请求需要一段时间。如果用户在该队列运行时离开 View Controller ,操作系统会取消分配 View Controller ,并且我会收到“消息发送到已取消分配的实例”错误。

我尝试过使用

[self.queue cancelAllOperations];

在 dealloc 方法中,但似乎它只取消在队列中等待的请求,而不是当前正在运行的请求,我收到了相同的错误。

处理这种情况的正确方法是什么?是否可以使 View Controller 在队列未完成时不被释放,即使用户离开它?或者有没有办法取消队列中的所有请求(包括正在运行的请求)?

最佳答案

@darvids0n 和 @AlexReynolds 的建议都很好。

问题可能是当前请求的委托(delegate)仍然设置,因此它尝试通知(现已释放的)委托(delegate)它已被取消。

您很可能可以通过将所有委托(delegate)设置为 nil 来避免这种情况:

for (ASIHTTPRequest *req in queue.operations)
{
[req setDelegate:nil];
[req cancel];
}
[queue setDelegate:nil];

关于iphone - 如何在 View 释放时安全地取消 ASINetworkQueue 中的所有请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8918333/

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