DispatchQueue Основная проблема асинхронной ссылки. (Ссылка исчезла) - PullRequest
1 голос
/ 10 октября 2019

У меня есть функция для получения сеанса пользователя. Я успешно получил сессию. Но внутри 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()
                    }
                }
            }
    }
}
...