gpt4 book ai didi

ios - 在 NSURLSessionData 的实现中未调用委托(delegate)方法

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

我有一个类,AWSUtil,我希望能够使用NSURLSessions获取图像上传和下载的进度

class AWSUtil : NSObject, NSURLSessionDelegate, NSURLSessionDownloadDelegate

我能够设置 session ,并且它们可以工作

func sessionTest(url: NSURL){
let task = NSURLSession(
configuration: NSURLSessionConfiguration.defaultSessionConfiguration(),
delegate: self,
delegateQueue: NSOperationQueue.mainQueue()
).dataTaskWithURL(url){(data, response, error) in
//code
}

task!.resume()
}

但我的问题是委托(delegate)方法,例如 NSURLSession didWriteData 没有被调用。

func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64){
//never called
}

我尝试实现不同的 NSURLSession 协议(protocol)并使该类不符合 NSObject,但都不起作用。无论我实现什么委托(delegate),或者我在类中放置什么委托(delegate)方法,都不会调用它们。

我认为这是因为对象在调用之前被释放,但我不确定。如果我想调用其中一个函数,我会使用

func awsTest(url: NSURL){
let aws = AWSUtil()
aws.sessionTest(url)
}

但是没有调用任何 NSURLSessionDownloadDelegate 方法。有什么办法可以解决这个问题,或者有解决方法吗?

最佳答案

您正在调用dataTaskWithURL。这是一个数据任务方法。数据任务有一个名为 NSURLSessionDataDelegate 的协议(protocol)。覆盖这些方法,例如URLSession:dataTask:...

didWriteData 在使用下载方法(例如 downloadTaskWithURL:)时被调用,并且您没有调用下载方法。

如果你看https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSURLSession_class/#//apple_ref/occ/instm/NSURLSession/downloadTaskWithURL :,在左侧的内容区域中,您会看到数据、下载和上传任务是单独分割的。每个都有其相应的委托(delegate)方法。

关于ios - 在 NSURLSessionData 的实现中未调用委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31217789/

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