Почему нет бесконечного цикла в didSet?
В моем FirstViewController у меня есть кнопка, указывающая на мой SecondViewController, передавая данные свойству в SecondViewController. Это свойство имеет свойство наблюдателя, создающее новый экземпляр SecondViewController, когда установлено.
Хотя он работает так, как я хочу, я удивляюсь, почему он не застревает в бесконечном цикле, создавая экземпляр SecondViewController навсегда. И это хорошая практика, чтобы сделать это таким образом?
FirstViewController:
class FirstViewController: UIViewController {
@IBAction func something(sender: UIButton) {
let destination = storyboard?.instantiateViewControllerWithIdentifier("secondViewController") as SecondViewController
destination.selected = 1
showViewController(destination, sender: self)
}
}
SecondViewController:
class SecondViewController: UIViewController {
var selected: Int = 0 {
didSet {
let destination = storyboard?.instantiateViewControllerWithIdentifier("secondViewController") as SecondViewController
destination.selected = selected
showViewController(destination, sender: self)
}
}
@IBAction func something(sender: UIButton) {
selected = 2
}
}
1 ответ
Если вы посмотрите документацию Apple для Swift на языке программирования Swift - Свойства, Apple скажет, что:
Замечания:
Если вы назначите значение свойству в его собственном обозревателе didSet, новое назначенное вами значение заменит то, которое было только что установлено.
Так что, если вы ставите точку останова в первой строке вашего didSet
Блок, я считаю, это должно быть вызвано только один раз.