Почему нет бесконечного цикла в 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)

Ваш ответ на вопрос