gpt4 book ai didi

ios - NSURLConnection 取消回调

转载 作者:行者123 更新时间:2023-11-28 21:29:11 27 4
gpt4 key购买 nike

是否可以使用回调捕获 NSURLConnection cancel

如果我使用这段代码

-(void) pleaseStopDownload {
cancelled = YES;
[conn cancel];
conn = nil;
[self myUpdateUImessage];
}

从时间到 myUpdateUImessage 在此回调之前被调用

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
NSLog(@"didReceiveData");
if (!cancelled) {
//this code inside brackets suddenly is calling:(
//not always but from time to time
summ += data.length;
if (_progressHandler != nil)
_progressHandler(data, summ, max);
} else {
return;
}
}

所以用户界面没有正确更新!即,显示最终 UI 而不是进度 UI。

编辑问题是关于

NSOperationQueue *tempQueue = [[NSOperationQueue alloc] init];
[conn setDelegateQueue:tempQueue];

正确的 NSQueueNSOperationQueue *tempQueue = [NSOperationQueue mainQueue];

最佳答案

Is it possible to catch NSURLConnection cancel using a callback?

没有。

来自官方文档here :

After this method is called, the connection makes no further delegate method calls.

这意味着您应该在调用 cancel 后立即处理 UI 清理,而不是依赖于 _cancelled 变量,因为 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 预计不会再被调用。

我的建议是从您的取消代码调用清理方法:

-(void) pleaseStopDownload {
[conn cancel];
conn = nil;
[self handleCancelledDownload];
}

关于ios - NSURLConnection 取消回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36844253/

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