представьте себе ViewController, который состоит из нескольких дочерних ViewController, как показано ниже:
ViewController1:
- ViewController2
- ViewController3
ViewController2 не меняется, поэтому он определяется на раскадровке с containerViews. Чтобы получить ссылку на ViewController2 с помощью ViewController1, я делаю следующее:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let destination = segue.destination
if let viewController2 = destination as? ViewController2 {
self.viewController2 = viewController2
}
}
Что касается ViewController3, он динамический, поэтому программно добавляется в ViewController1 следующим образом:
addChildViewController(viewController3)
view.addSubview(viewController3.view)
viewController3.didMove(toParentViewController: self)
Мой вопрос для обоих этих сценариев заключается в том, как правильно обрабатывать управление памятью ссылок viewController2 и viewController3. Должны ли они быть слабыми или сильными ссылками?
Спасибо!
deinit
вызывается. Как только у вас возникнет актуальная проблема, опубликуйте вопрос с соответствующей спецификой. - person rmaddy   schedule 05.02.2018addChildViewController
(или используете его как встроенный контейнер), это сохраняет сильную ссылку на дочерний контроллер. Так что вам не нужно беспокоиться о том, чтобы сохранить свою сильную ссылку на него. Но ты можешь, если хочешь. Но здесь нет сильного референтного цикла. - person Rob   schedule 05.02.2018