objective framework cocoa architecture interface-builder cocoa-bindings nsviewcontroller

framework - Arquitectura de la aplicación Cocoa en Mac OS X



cocoa touch framework (2)

Dividir las vistas en puntas separadas es principalmente bueno si va a intercambiar algunas vistas por otras, ya que puede cargarlas perezosamente. Y sí, en una aplicación moderna, usaría NSViewController, o tal vez KTViewController de KTUIKit (vea las publicaciones que coescribió sobre NSViewController )

Sin embargo, no solo corras a los brazos de la lista de fuentes. Una interfaz de una sola ventana puede ser buena para aplicaciones simples, pero puede volverse difícil de manejar rápidamente cuando tiene muchas cosas en marcha, ya que pueden ser mejor servidas al dividirlas en ventanas separadas; iTunes y Xcode proporcionan muchos ejemplos de esto (especialmente este último, ya que puedes cambiarlo entre SWI y MWI).

Debe pensar si una interfaz de ventana múltiple o de ventana única sería mejor para su aplicación. No hay una respuesta única para todas las aplicaciones; depende completamente de su aplicación, y de lo que quiera que haga y de cómo se vea; usted (más el resto de su equipo, si tiene uno) es el único que puede responder esta pregunta. Es posible que desee hacer algunos prototipos de papel para hacer experimentos rápidos en cada dirección, de modo que pueda mantener al menos ejemplos falsos de ambas interfaces de usuario enfrentadas entre sí.

Estoy volviendo al desarrollo de Cocoa en Mac después de una larga temporada de trabajo con iPhone. Mi experiencia previa con Cocoa en Mac ha sido solo pequeñas herramientas. Estoy buscando construir algo serio.

Al mirar una aplicación moderna de Cocoa como iPhoto (o Correo o Cosas o ...) muchas aplicaciones utilizan el enfoque basado en una sola ventana, basado en la lista de fuentes. Estoy tratando de entenderlo lo mejor que pueda porque parece proporcionar una buena experiencia. Sin embargo, estoy teniendo un pequeño problema. Así es como creo que debería verse, pero me pregunto cómo lo están haciendo los demás y cuál es realmente la mejor manera:

  • El punto de inicio de la aplicación es un objeto AppDelegate que, después de iniciarse, crea una ventana [¿Controlador?] Desde una punta, junto con la configuración de sus datos (desde, por ejemplo, CoreData)

  • WindowController carga una ventana que esencialmente solo tiene un NSSplitView en ella.

  • El lado izquierdo de la vista dividida tiene un NSTableView o NSOutlineView que está configurado para tener el estilo SourceList.

  • El lado derecho tiene el contenido principal de la aplicación, según el elemento de la vista de tabla que se seleccione.

Supongo que en algún lugar (¿dónde?) Hay NSViewControllers que gestionan cada una de las diferentes vistas que aparecerán en el lado derecho (piense cómo iPhoto tiene todas las fotos, eventos, caras, lugares, etc.) y me imagino que podrían aparecer en diferentes puntas. ... ¿es esto correcto?).

Esos controladores de vista probablemente están vinculados a la lista de fuentes de la izquierda ... ¿cómo funciona eso (la lista de fuentes está respaldada por un NSArrayController de NSViewControllers tal vez?).

De todos modos, esos son mis pensamientos, ¿estoy completamente fuera de base o ...? Busqué en la web, encontré esta publicación here , y observé un código fuente de Apple, pero parece que no puedo entenderlo. Cualquier orientación sería bienvenida.


Una forma fácil de tener una idea de la forma en que se dividen las plumillas es simplemente ir al directorio de iPhoto y comenzar a abrir las plumillas.

Si desea explorar un poco más en la estructura de clases, puede intentar navegar utilizando F-Script