¿Por qué necesitamos eliminar Vista de vista de contenedor después de una transición de salida exitosa?

Estoy leyendo la Guía de progtwigción del controller de vista para iOS en estos días, dice:

Debido a que las transiciones se pueden cancelar, debe usar el valor de retorno del método transitionWasCancelled del object de context para determinar qué limpieza es necesaria. Cuando se cancela una presentación, su animador debe deshacer las modificaciones que haya realizado en la jerarquía de la vista. Un despido exitoso requiere acciones similares.

en Presentaciones y Transiciones-> Personalización de las Animaciones de Transición-> Implementación de los Objetos de Animador-> Limpieza después de las Animaciones.

Y el código de muestra proporcionado por Apple:

BOOL success = ![transitionContext transitionWasCancelled]; // After a failed presentation or successful dismissal, remove the view. if ((self.presenting && !success) || (!self.presenting && success)) { [toView removeFromSuperview]; } // Notify UIKit that the transition has finished [transitionContext completeTransition:success]; 

Sé que, en el momento del rechazo, primero debemos agregar a Vista a la vista de contenedor, pero ¿por qué necesitamos eliminar aView después de un rechazo exitoso? He probado que si no llamo removeFromSuperview después de la removeFromSuperview exitosa, todo funciona bien.

¿Y qué pasará si falla el despido? ¿Todavía mostrará el controller de vista presentado o lo descartará y mostrará el controller de vista de presentación?

Alguien sabe sobre esto? Muchas gracias.

Por lo general, esto ocurrirá cuando uses animaciones personalizadas con interacciones. Pero si en caso de que la animation se cancele y si no maneja el estado de cancelación entonces, permanecerá en el estado del controller de vista presentado (en su caso)