2010-03-02 24 views
7

Mientras estoy aprendiendo la API de iPhone, el libro que estoy usando me hace hacer todo lo posible con el Interface Builder. Nosotros (solos aquí a veces) estamos escribiendo código también, pero realmente siento que estoy conociendo bastante bien el Interface Builder.¿Cuándo debería usar el generador de interfaz?

Sé que Interface Builder es diferente de otros constructores de GUI, ya que utiliza objetos serializados y no escribe código. Esto es supuestamente una buena cosa. Entonces ... en el trabajo diario, ¿es la herramienta de elección o debería tratar de superar mi dependencia del Interface Builder?

También: si sugiere que "depende de lo que esté haciendo", ¿de qué depende? ¿Cómo debo tomar la decisión de usar Interface Builder o no?

Nota: La versión subjetiva y argumentativa de esta pregunta se tituló, Interface Builder: Serious Tool o Just For Kids? pero decidí no hacerlo porque quiero evitar que se cierre la pregunta.

Respuesta

13

Interface Builder realmente se usa para hacer aplicaciones. Eche un vistazo a cualquier aplicación Mac basada en Cocoa, que es la mayoría que no son de Adobe o Microsoft, y verá que está llena de puntas. Es un poco más común que las aplicaciones de iPhone se hagan sin Interface Builder (porque el SDK original se envió sin IB), pero sigue siendo una herramienta muy utilizada.

La diferencia entre Interface Builder y la mayoría de los demás constructores de GUI es que Cocoa y Interface Builder se diseñaron teniendo en cuenta a los demás. De hecho, si busca en el Cocoa mailing list archives, encontrará muchas personas que con el paso de los años se preguntan cómo es posible crear una aplicación Cocoa sin utilizando el Creador de interfaces. (La respuesta es siempre la misma: puedes hacerlo todo en código, pero estarías perdiendo el tiempo y dificultando el diseño de una buena interfaz.)

+0

Gracias, esto es una especie de lo que estaba pensando. Al menos es una nota positiva en un día lleno de conteo de referencias. –

+0

Sé que esta es una vieja pregunta y una respuesta anterior; sin embargo, estoy totalmente de acuerdo con esta respuesta. – Moszi

+0

@Moszi, es mejor que revises todas las respuestas de Chuck aquí en SO. Son consistentemente perspicaces e informativos. –

3

El generador de interfaz es excelente si planeas utilizar una versión estándar Elementos de la interfaz de usuario de UIKit. El uso de Interface Builder para diseñar interfaces de usuario basadas en UIKit también le ayuda a cumplir con el Apple iPhone Human Interface Guidelines.

Hay solo un puñado de casos en los que no desearía usar el Interface Builder, el más obvio son los juegos que ofrecen su propia apariencia única.

No creo que deba preocuparse por crear una "dependencia del Interface Builder". Es una herramienta, como cualquier otra. Usarlo no es una dependencia, es solo la forma en que hacemos las cosas.

+1

gracias Brian, esto no es cierto con otras herramientas GUI en otras plataformas. El código creado con los constructores muchas veces se ve horrible y puede ser difícil de mantener. Entonces no creo que sea como cualquier otra herramienta. Parece encajar bien con NO usarlo, o usarlo a veces. –

3

Interface Builder es una gran herramienta. Úselo tanto como pueda.
Cuando no puede hacer algo con Interface Builder solamente, entonces es hora de escribir código que mezcle IBOutlets y código, o solo en código.

2

Interface Builder no genera código, simplemente crea un gráfico de objeto de las clases existentes. Si miras el archivo de punta puedes ver esto. Es solo una lista de reglas sobre qué objetos crear y qué relaciones establecer entre ellos. No hay código en una punta y sorprendentemente hay muy poco código en los diversos métodos loadFromNib.

Es el acoplamiento en tiempo de ejecución en Objective-c lo que hace que todo esto sea posible. No puedo hablar en otro idioma.

+0

Quizás estoy equivocado, pero creo que incluso Java tiene acoplamiento de Runtime (a través de Reflection e invocación dinámica) ... aunque no existe un generador de interfaz, es teóricamente posible en muchos idiomas. ¿No? –

+1

Java se inspiró en parte por Objective-C, por lo que se acercó, pero IIRC, Java no tiene contrapartida a la referencia "id", por lo que no es tan flexible como Objective-C en este sentido. Cada lenguaje tiene algo que hace mejor que otros y el acoplamiento en tiempo de ejecución es Objective-C forte. – TechZen

Cuestiones relacionadas