La variable del controller de la vista del destino se vuelve nula después de configurarse

Básicamente, hay algo mal con mi código, Swift o el comstackdor / Xcode en sí. Tengo 2 ViewControllers y el segundo (destino) tiene 2 variables de UIImage. First ViewController establece esas 2 imágenes en prepareForSegue así:

if let destVC = segue.destinationViewController as? SecondViewController { destVC.firstImage = firstImage destVC.secondImage = secondImage } 

Cada vez que verifico lo que está sucediendo en esa parte del código, tanto firstImage como secondImage se configuran y nunca son nulos (ambos se crearon antes de esa parte del código, e incluso me registré para comprobarlo y nunca fueron nulos), sin embargo, en viewDidLoad método en SecondViewController, la aplicación falla porque la primera image está configurada, pero secondImage es nil (y forzo la desenvolvió). He intentado comstackrlo varias veces, cada vez que es nulo y se cuelga. Después de eso, agregué la línea de printing ("hello world") al código segue, la borré, guardé el file, compilé nuevamente y la aplicación nunca se bloqueó nuevamente.

Entonces, mi pregunta aquí es: qué sucedió exactamente, juzgando por código, la segunda image nunca debe ser nula (ya que la segunda image nunca es nula, ni fue nula en el depurador o cuando hago un punto de ruptura), entonces ¿por qué se convirtió la segunda image en destVC? ¿nulo?

También debo mencionar que estoy usando Git incorporado, y no estoy seguro de si está afectando o corrompiendo los files, ya que ya tuve problemas en los que a Xcode a veces les cuesta reindexar el código y la autocompletación deja de funcionar para 20-30 segundos hasta que lo haga (tengo una iMac Retina con un i5 así que esto realmente no debería ser un problema).

editar: déjame agregar el código de SecondViewController para dejar las cosas claras:

 ... class SecondViewController: UIViewController { ... var firstImage: UIImage? var secondImage: UIImage? ... override func viewDidLoad() { super.viewDidLoad() self.loadMainImage(self.firstImage!) self.loadSecondaryImage(self.secondImage!) // secondImage was nil all the time here so it crashed at this point cause of force unwrap ... } ... } 

Entonces, como puedes ver, estoy configurando todo correctamente, y los methods toman UIImage (¿no UIImage opcional?) Y hacen algo con esas imágenes, sin embargo, secondImage siempre fue nulo. Entonces, mis preguntas son: ¿por qué se establece firstImage normalmente y segundo no? Y por qué comenzó a funcionar normalmente cuando agregué una línea de código, luego la eliminé y compilé todo nuevamente.

Soy consciente de que puedo verificar si la segunda image es nula y que puedo hacer el desenvolvimiento opcional, pero el punto aquí es: ¿por qué se estableció en cero sin ningún motivo?

Puede pasar la image a otra propiedad de image del segundo VC y luego establecer la image "pasada" en viewDidLoad del SecondVC. PERO no puede pasar ni establecer la image directamente a la de imageView.image de SecondVC, ya que secondVC.imageView aún no está asignado a la memory.

Lo que debe hacer es crear una propiedad UIImage en el .h de secondVC y pasar la image a esa propiedad de image. Establezca la image en viewDidLoad