UIViewController не освобождается после увольнения - PullRequest
0 голосов
/ 20 мая 2019

У меня есть MainViewController и я представляю другой контроллер представления VC1.От VC1 я представляю другой вид контроллера VC2.Я передаю дату из VC2-> VC1-> MainViewController, используя замыкания.

VC2-> Значение VC1 прошло, VC2 отклонено, значение VC1-> MainViewController прошло, а VC1 отклонено

После того, как MainViewController получилданные из VC2 выдвигает другой контроллер представления VC3.

UIViewController VC2 не деинициализируется после закрытия.Я получаю данные сокета в VC2 даже после того, как он уволен и значения повторно переданы в MainViewController.И MainViewController нажимает VC3 несколько раз.

class MainViewController: UIViewController {

    @objc func goToVC1() {
        let vc1 = VC1()
        vc1.callBack = { [weak self] result in
            let vc3 = VC3()
            vc3.result = result
            self?.navigationController?.pushViewController(vc3, animated: true)
        }
    }
}
class VC1: UIViewController {

    var callBack: ((String)->Void)?

    @objc func goToVC2() {
        let vc2 = VC2()
        vc2.callBack = { [weak self] result in
            self?.callBack?(result)
            self?.dismiss(animated: false, completion: nil)
        }
    }
    @objc func gotDataHere(_ string: String) {
        self.callBack?(string)
        self.dismiss(animated: false, completion: nil)
    }
}
class VC2: UIViewController {

    var callBack: ((String)->Void)?

    @objc func methodCalledRepeatedly(_ string: String) {
        self.callBack?(string)
        self.dismiss(animated: true, completion: nil)
    }
}
class VC3: UIViewController {
    var result: String?
    override func viewDidLoad() {
        super.viewDidLoad()
        print(result)//Printed repeatedly
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...