2009-04-25 8 views
15

En el día de C/C++, la parte del lenguaje que realmente me colmaba era punteros. Los entiendo ahora, por supuesto.¿Existe una guía fácil de entender (nueva para Cocoa, Xcode, etc.) para Interface Builder que habla de objetos proxy?

Ahora, Interface Builder Proxy Objetos o más importante, cómo usar Interface Builder y qué poner en la ventana .XIB (ventana que contiene el propietario del archivo, First Responder, etc ...) para un XIB determinado.

He pasado por un buen número de ejemplos de libros y muestras encontradas tanto en los ejemplos Xcodes y en la web. Han sido útiles, pero aún me siento un poco perdido.

Siento que la comprensión de IB es muy importante para la comprensión de cómo escribir aplicaciones táctiles Mac/iPhone/iPod.

He pasado por los siguientes recursos hasta ahora: programación Cocoa Aaron Hillegass' para Mac OS X recursos programador pragmático: Ser Productivo en Xcode (screencast) cacao Programación Codificación en Objective-C 2.0 (screncast) Escribiendo su primera aplicación para iPhone (screencast) Desarrollo de SDK para iPhone

También revisé el PDF de la Guía del usuario de Interface Builder.

¡Cualquier sugerencia/recursos apreciados serán apreciados!

+0

Para una explicación de lo que es de archivo de propietario: http://crazyviraj.blogspot.com/2009/05/cocoa-what-is-files-owner-in-nib.html – psychotik

Respuesta

44

Primero, el marcador de posición es una palabra mejor que el proxy aquí.

Normalmente, cuando se tiene un objeto en un archivo/XI ter SEMILLA significa que la carga del archivo SEMILLA creará esa instancia. Los objetos de marcador de posición son objetos que ya existirán cuando se carga el archivo NIB y aparecen dentro del NIB para que pueda establecer conexiones entre los objetos que se crearán al cargar el NIB y los objetos que ya existen.

El propietario del archivo, el que responde primero y la aplicación son todos marcadores de posición.

El propietario del archivo es marcador de posición para el objeto que cargará el plumín. Todos los métodos de carga NIB toman un parámetro 'propietario'. Cuando establece una conexión con el propietario del archivo, cuando se establece en tiempo de ejecución, se conecta al objeto propietario pasado al método de carga de punta. Muchas clases de UIKit y AppKit invocan los métodos de carga de puntadas para usted. NSApplication, NSViewController, NSWindowController, UIApplication y UIViewController todos los archivos NIB carga en su nombre. Cuando lo hacen, pasan self como parámetro del propietario a los métodos de carga de la punta. Es por eso que cuando usa un controlador de vista o un controlador de ventana, establece el propietario del archivo en su subclase y realiza la mayoría de las conexiones entre sus vistas y el propietario del archivo.

El NSApplication instancia es un marcador de posición simple para [NSApplication sharedApplication]. Es un singleton global y el ícono en Interface Builder representa ese singleton global. Cargar el archivo NIB no crea una segunda instancia NSApplication.Por el contrario, cuando un archivo NIB contiene una ventana, si la carga una docena de veces, tendrá una docena de instancias de ventana, pero todavía una instancia de NSApplication.

El primer respondedor es único. Conectar una acción al primer respondedor significa que cuando se dispara la acción, debe enviarse dinámicamente a la cadena de respuesta. La cadena de respuesta generalmente comienza con la vista enfocada, y continúa hacia arriba a través de la jerarquía de vista e incluye algunos controladores y delegados. Cada objeto en la cadena tiene una oportunidad de manejar la acción. Los elementos del menú funcionan muy bien con la cadena de respuesta. Si tiene un elemento de menú para "Hacer negrita" que se supone que hace que el texto seleccionado actualmente sea negrita, puede comenzar por conectarlo a una subclase NSApplication, pero entonces debe conocer todas las situaciones que "hacen negrita". "se aplica y cómo manejarlos. Una vista de texto y una vista web editable probablemente necesitarían un código diferente para manejar "hacer negrita" y embotellar todo esto en un objeto se volvería bastante complejo y no sería muy extensible. En su lugar, puede conectar la acción del elemento de menú "Hacer negrita" hasta una acción makeBold: en el Primer Respondedor. Esto significaría que cuando se seleccionó el elemento del menú, el objeto enfocado, o uno de sus padres que respondió al makeBold:, recibiría el mensaje makeBold:. Ahora muchas clases pueden implementar un método makeBold: y responder a este elemento de menú cuando están enfocadas.

+0

Muchas gracias MUCHAS por esa explicación. Eso debería estar en los libros y en la documentación de Apple. Es exactamente lo que necesitaba. Lo "obtengo" ahora. – VesperDEM

+0

Por cierto, debe tomar cualquier cosa que Jon diga sobre los archivos IB y NIB como autorizados. – NSResponder

+0

@NSResponder ¿por qué? –

1

Con la excepción del "Manual de Archivo" (que se engancha cuando se carga la punta/xib), los objetos que se crean en IB son objetos reales, no objetos proxy.

Es posible que desee consultar algunos ejemplos de códigos existentes para ver cómo IB enlaza las cosas. ¿Hay algo en la documentación/tutoriales que hayas leído que te confunda? Es difícil hacer mucho con "un poco perdido".

+0

Todo lo que he leído me dice que el expediente de El propietario, el Primer Respondedor y la Aplicación son todos objetos proxy. El resto se llama objetos de nivel superior. La ventana con los íconos a los que me refería se llama ventana del documento Nib. Como dije en mi pregunta, he leído bastantes recursos. Estoy "un poco" perdido porque he podido hacer algunas aplicaciones de ventana única muy simples. Nada tan elegante. Empiezo a tener problemas a la hora de saber cuánto poner en un solo XIB. Las guías del usuario le dicen qué es todo, pero no las mejores prácticas. – VesperDEM

+0

Además, al parecer, las publicaciones aquí eliminan algunos formatos. Tenía el párrafo sobre qué recursos había mirado separados por líneas. Aparentemente, a este sitio no le gusta Carriage Returns en las publicaciones. Al menos CR individuales. – VesperDEM

+1

La aplicación es un poco diferente ya que siempre se conecta al objeto de la aplicación. First Responder no es exclusivamente un concepto de IB, está entregando mensajes a la cadena de respuesta. (Si no comprende cómo funciona eso, lea al respecto.) De todos modos, una ventana y uno o más controladores por XIB es lo habitual. Está intercambiando el tiempo para descomprimir los objetos para el uso de la memoria. De nuevo, busque algunas aplicaciones reales para desarrollar sus gustos. Si tiene comentarios sobre la falta de soporte para el formateo en los comentarios (estoy de acuerdo con usted), haga clic en el enlace "comentarios siempre bienvenidos" en la parte inferior de la página. –

1

Apple tiene el siguiente documento que explica propietario del de archivo, primera respuesta y Aplicación objetos de marcador de posición que se encuentra en los archivos de Interface Builder SEMILLA/XIB aquí:

Interface Builder User Guide: Placeholder Objects

Me di cuenta en su pregunta que usted mencionó leer los documentos de Interface Builder de Apple, pero sentí que era apropiado priate publicar esto aquí para referencia futura. Además, los documentos se han actualizado desde que se hizo la primera pregunta, por lo que es posible que hayan aclarado las cosas desde entonces.

Cuestiones relacionadas