我有以下快速代码......
public class WebAPI {
private var session:URLSession
public init() {
session = URLSession.shared
}
public func makeCall(_ foo:String, callback:@escaping (String?)->Void) {
var request:URLRequest = makeRequest()
let task = session.dataTask(with: request) { (data, response, error) in
var resp = makeResponse(data)
callback(resp)
}
task.resume()
}
}
我称之为班级方法......
public class MyController : UIViewController {
var api:WebAPI = WebAPI()
func viewWillAppear(_ animated: Bool){
super.viewWillAppear(animated)
api.makeCall("blah") { (response) in
print ("\(response)")
}
}
}
当我启动UIViewController时 - 发出网络请求(通过makeCall)并调用MyController类传入的回调......正如您所期望的那样。
然而,当再次调用它时(例如,如果切换标签栏并返回),则会发出网络请求(没有错误),但是永远不会调用session.dataTask(...)的回调。
现在已经坚持了一段时间,所以任何帮助都会受到赞赏。