¿Cuál es la diferencia entre las classs RootViewController, AppDelegate y View Controller que puedo crear?

Estoy tratando de aprender la progtwigción para el iPhone y sigo viendo estos files y no estoy seguro de cuándo se refiere cada file y contenido de esos files en la ejecución de un progtwig creado para el iPhone. Estoy tratando de seguir tutoriales y consejos disponibles en línea, pero en ninguna parte hay una comparación punto por punto o algo por el estilo. Sería genial si alguno de ustedes pudiera enumerar algunas diferencias básicas como cuándo se refiere cada file y qué idealmente debería ir a cada file, etc. Gracias por tu time ya.

En general, los delegates pueden ser considerados como manejadores de events. En consecuencia, AppDelegate es el gestor de events principal para toda su aplicación. Se le informa cuándo se lanzó la aplicación, cuándo saldrá, cuándo entra una notificación Push, cuándo la aplicación se ha ido al background, etc. Uno de esos events, applicationDidFinishLaunching, es normalmente el responsable de crear la window de la aplicación y agregar vistas a esa window

En la mayoría de las aplicaciones, la vista que se agrega a la window en realidad está controlada por un UIViewController. Cada UIViewController es responsable de administrar la apariencia de una vista principal más todas sus subvistas. Por ejemplo, un UITableViewController es responsable de administrar un UITableView (vista principal) y todas las UITableViewCells (subvista) que se insertan en ese UITableView. UIViewController típicamente actúa como un delegado (controller de events) para las vistas de las que es responsable. Cuando un usuario toca una celda de vista de tabla, se llama a un método en UITableViewController. Cuando el usuario pulsa para eliminar un método por separado se llama.

Un UIViewController genérico proporciona la misma funcionalidad básica, pero para vistas personalizadas. Por ejemplo, UIViewController puede ser responsable de mostrar algunas vistas de text y un button. UIViewController crearía su vista principal, las vistas de text y la vista de botones. Las vistas de text y la vista de botones se agregarán a la vista principal del controller de vista como sub-vistas. UIViewController se registraría como delegado de events desde la vista de text (por ejemplo, aprender cuando el usuario haya terminado de editar el text en la vista de text). También registraría un método para manejar una pulsación de button que se origina en el button que tenía. Cuando ocurre cualquiera de estos events registrados, se invocan los methods en UIViewController que le permiten tomar cualquier acción que sea necesaria.

El rootViewController es un tipo específico de controller de vista utilizado con los controlleres de navigation. Si desea una aplicación que tenga la típica jerarquía de vista de navigation de iOS, su AppDelegate normalmente agregará un UINavigationController a la window de la aplicación. Que UINavigationController es inútil sin tener realmente contenido para mostrar. Ahí es donde entra en juego rootViewController. Usted es responsable de proporcionar un controller de vista (como el descrito anteriormente) para que actúe como la primera vista almacenada en la stack de vistas de UINavigationController. Esta vista se mostrará cuando la aplicación se inicie y en cualquier momento en que el usuario muestre los ViewControllers posteriores fuera de la stack UINavigationController.

Me doy count de que hace mucho time, pero espero que ayude.