Я проверяю пример использования 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
здесь?