Xcode: ¿Está evitando el generador de interfaces una buena o mala idea?

Poco a poco estoy aprendiendo cómo comstackr aplicaciones en Xcode y Objective-C y he estado leyendo esta publicación de blog sobre la escritura de aplicaciones Cocoa Touch sin usar nunca el generador de interfaces y esta publicación del blog sobre cómo alguien simplemente usa el generador de interfaces siempre que pueden.

Me encuentro más inclinado a evitar usar el Interface Builder, ya que puedo encontrar problemas más rápido si es solo un código simple, y en este punto estoy más familiarizado con la escritura de código que con el Interface Builder.

Entonces, estoy considerando evitar utilizar el Interface Builder por completo. Pero antes de hacerlo quería saber lo siguiente:

  • ¿Hay algún momento en el que deba usar Interface Builder? ¿Hay algo que sea imposible de lograr sin él? (Sé que lo contrario es verdad.)

  • ¿Hay prácticas que pueda emplear para ayudarme a no perderte las ventajas que Tal Bereznitskey describe para usar Interface Builder? Estoy pensando específicamente en los puntos que hace que sea más fácil de mantener y más fácil de prototipar y cambiar cosas.

  • Ignorar el Interface Builder me pone en desventaja de todos modos para build aplicaciones en el futuro. ¿Las aplicaciones complejas en las que espero estar trabajando en el futuro serán mucho más difíciles de desarrollar si solo me apego al código de escritura?

  • Actualmente solo estoy desarrollando Apps por mí mismo, pero cuando empiece a trabajar con otros desarrolladores, ¿tendré una desventaja significativa porque nunca aprendí a usar el Interface Builder, o podré aprender simplemente a escribir código?

Mi experiencia con el desarrollo y los pros y los contras de IB:

Comienza por dejar que IB elimine la complejidad donde oculta el aprendizaje sobre conceptos básicos expresables solo en código. Hay mucho que decir sobre el hecho, a pesar de que IB oculta conexiones que de otro modo serían obvias (y, por lo tanto, fáciles de aprender y depurar), sin embargo, en general, hacen un buen trabajo eliminando códigos extraños.

Es beneficioso aprender lo más posible sobre la forma en que las jerarquías de visualización y los elementos de la interfaz de usuario funcionan sin necesidad de utilizar IB una vez que se sienta más cómodo con Objective-C y el cocoa. No creo que haya algo que no puedas hacer en IB, pero sin duda hay mucho más flexible y potente cuando se maneja de forma progtwigda.

A partir de ese momento, una vez que entienda las funciones subyacentes, puede volver a usar IB y dejar que le ahorre time y energía que de otro modo usaría, estableciendo muchas properties de los elementos UIKit.

Para resolver sus inquietudes sobre perderse. Diría que tómate un time para aprender tanto Storyboards (un método colectivo de planificación de la UI) como los files XIB / NIB (donde un único file de UI está asociado con un controller de vista única). Los guiones charts son más nuevos y less perfectamente entendidos por muchas personas, ¡incluyéndome a mí! Los NIB y los XIB son más potentes / less obvios pero aún muy importantes, ya que algunas cosas no funcionan tan bien en Storyboards.

En términos de trabajar con otros, el IB puede hacer que el control de la versión sea un dolor, ya que el Plist / Backing de los files IB no siempre juega bien con fusionarse, etc. Sin embargo, yo diría que si vienes de un punto de aprendizaje codifique primero, luego, pasar a aprender IB será más fácil que al revés. La regla más importante de trabajar en equipo es no tener miedo de hacer preguntas. Sus habilidades de código ayudarán a otra persona que, a su vez, puede ayudarlo con IB.

Espero que ayude. Hay excelentes tutoriales en el sitio de Ray Wendlerlich, google él.

El tema ya se ha cubierto bien. Déjame arrojar mi perspectiva de manera sucinta.

En los primeros días del desarrollo de iOS, Interface Builder era muy complicado y evitarlo por completo era una forma legítima de garantizar less errores (y, por lo tanto, ahorrar time).

Lo mismo ya no es cierto. Si haces todo desde el código, pasarás 3 veces más time creando interfaces de usuario.

También los storyboards son una manera fácil de explicar el flujo de pantalla a otros.

¿Hay algún momento en el que deba usar Interface Builder? ¿Hay algo que sea imposible de lograr sin él? (Sé que lo contrario es verdad.)

Por lo que yo sé, no.

¿Hay prácticas que pueda emplear para ayudarme a no perderte las ventajas que Tal Bereznitskey describe para usar Interface Builder? Estoy pensando específicamente en los puntos que hace que sea más fácil de mantener y más fácil de prototipar y cambiar cosas.

Interface Builder tiene varias ventajas y desventajas. Permítanme enumerar algunos de ellos:

Ventaja # 1: es más fácil acelerar rápidamente las interfaces moderadamente complejas.

Ventaja # 2: ya que está profundamente integrado con las herramientas de desarrollo, puede estar casi seguro de que mantiene la coinheritance dentro de la interfaz de usuario de su aplicación. Por ejemplo, he experimentado que cuando he creado un controller de vista de tabla, me perdí algunos pequeños detalles en el código, y había algo de espacio vacío extra por encima de la vista de la tabla. Este error no ocurrió cuando usé IB.

Desventaja n. ° 1: en el caso de las bibliotecas opensource y las aplicaciones, los desarrolladores sin IB (por ejemplo, aquellos que usan una cadena de herramientas no oficial y / o aquellos que se desarrollan para dispositivos con jailbreak, por ejemplo Theos) no podrán usar su código por completo.

Desventaja n. ° 2: si usted es un principiante con desarrollo de iOS, puede volverse "perezoso" y no aprender a build una interfaz de usuario completa del código. Esta es una habilidad muy útil cuando se crean interfaces altamente dinámicas con muchos pequeños detalles.

Ignorar el Interface Builder me pone en desventaja de todos modos para build aplicaciones en el futuro. ¿Las aplicaciones complejas en las que espero estar trabajando en el futuro serán mucho más difíciles de desarrollar si solo me apego al código de escritura?

La única desventaja que veo es que al principio, escribir el código desde cero puede ser más lento que arrastrar los widgets, pero incluso esta diferencia se vuelve pequeña con el time.

Actualmente solo estoy desarrollando Apps por mí mismo, pero cuando empiece a trabajar con otros desarrolladores, ¿tendré una desventaja significativa porque nunca aprendí a usar el Interface Builder, o podré aprender simplemente a escribir código?

En general, poder utilizar IB es una habilidad esperada cuando se trabaja en un grupo, pero mi experiencia personal confirma que no es un gran problema si no puede / no lo usa. El verano pasado, trabajé para una empresa en una aplicación profesional de banca mobile. No tengo mucha experiencia con IB y casi nunca lo uso, pero yo estaba entre los desarrolladores más productivos.