iOS Swift - 第一次调用后,URLSession.dataTask不调用回调方法

时间:2018-05-10 09:06:06

标签: ios swift networking urlsession

我有以下快速代码......

    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(...)的回调。

现在已经坚持了一段时间,所以任何帮助都会受到赞赏。

0 个答案:

没有答案