У меня есть функция для получения сеанса пользователя. Я успешно получил сессию. Но внутри DispatchQueue я теряю объект задачи (задача: AWSTask ).
До DispatchQueue оно не равно нулю, но в DispatchQueue оно равно нулю. Некоторые, как я теряю ссылку.
Каков наилучший способ получения и ссылки на объект извне DispatchQueue. (Я не хочу создавать общую переменную в классе.) Кстати, это происходит не всегда.
var pool:AWSCognitoIdentityUserPool
override init(){
pool = AWSCognitoIdentityUserPool(forKey: "UserPool")
super.init()
}
func getUserPool() -> AWSCognitoIdentityUserPool {
return pool
}
func getUserSession(completition: @escaping () -> Void)
{
let user = pool.currentUser()!
let task = user.getSession()
task.continueWith{ (task:AWSTask<AWSCognitoIdentityUserSession>) in
{
DispatchQueue.main.async
{
if(task.result != nil && task.error == nil)
{
/*
There are some calculations here
*/
completition()
}
}
}
}
}