Я столкнулся с тупиком внутри одной из операций в очереди делегатов NSUrlSession при использовании Alamofire.Тупик внутри очереди делегатов NSURLSession
Это происходит, когда я выполняю хотя бы одну загрузку и одну загрузку одновременно (все запросы выполняются через менеджер Alamofire по умолчанию). Есть ли проблема в том, что это связано с несколькими потоками? (либо в NSUrlSession, либо в Alamofire)
похоже, что он застрял на __psynch_mutexwait в одной из операций в очереди делегатов NSURLSession и полностью отключает возможность приложения делать сетевые запросы через Alamofire (потому что делегат не будет быть вызванным когда-либо).
, как я сказал, что загрузка и загрузка называется одновременно на 2-х разных очередей (один из них, как правило, называют в основном потоке) пример
загрузки:
Alamofire.upload(.POST, uploadURL,
multipartFormData: { multipartFormData in
multipartFormData.appendBodyPart(data: x.dataUsingEncoding(NSUTF8StringEncoding)!, name: "X")
multipartFormData.appendBodyPart(data: fileData, name: "file", fileName: "Y", mimeType: "application/octet-stream")
}
},
encodingCompletion: { encodingResult in
switch encodingResult {
case .Success(let upload, _, _):
upload.response { (request, response, data, error) -> Void in
if let error = error {
callback("Failure", "\(error)")
} else {
callback("SUCCESS", nil)
}
}
case .Failure(let encodingError):
callback(nil, "Failed due to \(encodingError)")
}
}
)
скачать пример:
Alamofire.download(.GET, downloadUrl, parameters: ["a": "a", "b": "b"], destination:
{
tempURL, response in
return path
}).response {
(request, response, _, error) in
let data = NSData(contentsOfURL: path)
doSomeStuffWithDownloadedData(data)
// make another request after download completed
Alamofire.request(.GET, requestUrl, parameters: ["c":"c", "d":"d"]).response {
request, response, data, error in
if let e = error {
log.error("request failed, \(e)")
}
}
}
У вас есть пример кода и/или некоторые выходы или журналы, на которые мы могли бы обратить внимание? –
добавлены примеры кода и трассировка стека – yeps