significa - ¿Debería usar enlaces Cocoa para mi último proyecto?
que significa alt en una imagen (7)
Después de un tiempo de trabajar con Bindings descubrí que no es magia en absoluto, pensé que era una tecnología suficientemente avanzada. La depuración de una interfaz vinculada requiere diferentes técnicas que una interfaz pegada, pero una vez que tenga esas técnicas, las ventajas en términos de reutilización, facilidad de mantenimiento y coherencia son importantes para la OMI.
Estoy comenzando un proyecto que creo que se beneficiaría de los enlaces (tengo una tabla de la lista fuente, varias vistas del navegador, etc.), pero creo que también sería bastante factible, y quizás más comprensible, sin ellos. Desde mi experiencia limitada, he encontrado que las encuadernaciones son difíciles de solucionar y son muy "mágicas" (por ejemplo, es difícil insertar el registro en cualquier parte para descubrir dónde se están rompiendo las cosas, todo funciona o no).
¿Es esto solo mi inexperiencia hablando (en cuyo caso podría sentarme y pasar algún tiempo trabajando en mi comprensión de las fijaciones y esperar que las cosas empiecen a ser más claras / más fáciles) o sería mejor escribir todo el código de pegamento yo mismo en una manera que estaba seguro de que podía entender y solucionar.
Los enlaces pueden parecer mágicos por naturaleza. Para entender la magia detrás de los enlaces, creo que uno debe entender KVC / KVO a fondo. Realmente quiero decir a fondo.
Sin embargo, en mi caso (nuevo en Obj-C - 9 meses), una vez que obtuve las ataduras KVC / KVO fue una emoción. Redujo significativamente mi código de pegamento y me hizo la vida mucho más fácil. Las correlaciones de depuración se convirtieron en un caso para asegurarme de que mis cambios de clave-valor fueran observables. Me parece que puedo dedicar más tiempo a escribir lo que se supone que debe hacer mi aplicación en lugar de asegurarme de que la vista refleje los datos.
Estoy de acuerdo, sin embargo, que las ataduras son muy intimidantes al principio.
Mi enfoque general es comenzar lo más posible utilizando enlaces y ver cómo van las cosas. Sin embargo, si un elemento de la interfaz en particular comienza a ser problemático utilizando enlaces, o más esfuerzo de lo que vale, entonces no dudo en recurrir a métodos más tradicionales (por ejemplo, fuentes de datos, acciones) cuando tenga sentido. He descubierto que estas cosas pueden ser bastante difíciles de predecir con anticipación, pero creo que favorecer las consolidaciones es mejor a largo plazo, siempre y cuando no seas demasiado dogmático para seguir con ellas en situaciones en las que no proporcionan cualquier beneficio.
Use enlaces.
Tenga en cuenta que debe seguir el patrón MVC para aprovechar al máximo los enlaces. Esto es más fácil de lo que parece , ya que Cocoa hace casi todo por ti hoy en día:
- Ver:
NSView
y subclases (por supuesto),NSCell
y subclases,NSWindow
y subclases - Controlador:
NSController
y subclases (especialmenteNSArrayController
) - Modelo: Datos principales
Si no va a utilizar Core Data, puede rodar sus propios objetos modelo, pero esto es fácil. La mayoría de los métodos de estos objetos serán simples @synthesize
acceso, que pueden @synthesize
si se dirigen a Leopard.
Por lo general, no puede salirse con la suya escribiendo ningún código, pero los enlaces pueden permitirle escribir muy poco código.
Lectura recomendada:
- Guía de programación de clave-valor de codificación (KVC)
- Guía de programación de observación de valores clave (KVO)
- Guía de implementación de objetos modelo
- Métodos de accesorios de KVC (parte de la Guía de programación de KVC antes mencionada) y mi lista completa de formatos de selector de accesorios compatibles con KVC
Parece que utilizo bindings, KVO y métodos de fuente de datos en igualdad de condiciones en mis aplicaciones. Realmente depende del contexto. Por ejemplo, en uno de mis proyectos utilizo enlaces casi en todas partes excepto en la vista de esquema de la ventana principal, que es lo suficientemente compleja como para no querer ni siquiera intentar encajarla en un NSTreeController. Al mismo tiempo, también utilizo KVO para volver a cargar objetos UI y seguir dependencias en mis objetos modelo.
Lo importante a tener en cuenta al aprender temas avanzados de Cocoa como enlaces o datos básicos es que debe comprender todas las tecnologías detrás de ellos; todo, desde los protocolos de fuente de datos, notificaciones KVO, y así sucesivamente. Una vez que haya tenido suficiente experiencia trabajando con ellos para saber cómo funciona la "magia", podrá integrar las cosas de más alto nivel en su aplicación con facilidad.
En su caso particular, tendrá que decidir si vale la pena el tiempo adicional para aprender los enlaces además del desarrollo de su aplicación. Si es posible, podría ser beneficioso para usted desarrollar un prototipo simplificado de su aplicación utilizando enlaces, para que sepa cómo encajar mejor las piezas al comenzar el proyecto real.
Mi opinión es que sí, debes adoptar enlaces; la tecnología es bien conocida y estable ahora, y vale la pena hacerlo por la cantidad de código que ya no necesita escribir. Cuando cambié por primera vez a las fijaciones, tuve un gran problema al obtener la vida útil de los objetos observados y observados para que coincidieran, y con las roturas UI porque estaba observando un objeto válido, pero el incorrecto. Una vez que ha visto esos problemas un par de veces, saber cómo evitarlos y cómo detectarlos si aparecen es muy sencillo. Ish. Todavía deseo que "este evento aquí causó esta actualización aquí" siga los pasos en el depurador, pero aún estoy contento de haber hecho el cambio.
Para los curiosos, terminé usando enlaces y después de un par de días, de repente comenzaron a "tener sentido". Así que definitivamente recomendaría seguir adelante y tomarme el tiempo para aprenderlos.
También encontré el consejo de Brian Webster bastante útil, ya que de hecho terminé haciendo un puñado de cosas a la vieja usanza, ya sea porque las encuadernaciones no podían hacer lo que quería o porque hubiera sido prohibitivamente complicado hacer lo que necesitaba usando enlaces