我正在检查使用URLSession
的示例,网络任务由一个或多或少像这样的单例类执行:
class NetworkManager: NSObject {
static let sharedInstance = NetworkManager()
fileprivate var session: URLSession
fileprivate var dataTask: URLSessionDataTask?
override init() {
let configuration = URLSessionConfiguration.default
session = URLSession(configuration: configuration)
super.init()
}
func search(searchUrl: URL, completion: @escaping NetResult) {
dataTask?.cancel()
dataTask = session.dataTask(with: searchUrl, completionHandler: completion)
dataTask?.resume()
}
// Some other methods
}
此课程也符合URLSessionDownloadDelegate
中的extension
。
这里继承NSObject
的好处是什么?