¿Puede alguien explicar de una manera humanamente comprensible qué es un "Outlet"?¿Qué describe mejor a un "Outlet" en el objetivo-c/Cocoa?
Respuesta
acabo de pensar en él como un puntero a un control de interfaz de usuario. Una vez que hice esa conexión mental en mi mente, tenía sentido.
No necesariamente. También podría ser un NSController o un delegado. El puntero a otro objeto es más preciso. –
Yo diría que son el puente que conecta los objetos de la interfaz de usuario con el código que los usa. Como su nombre indica, proporcionan un lugar para "conectar" su UI a su código.
Es una variable de instancia que aparece en Interface Builder, de modo que puede usar IB para conectar otro objeto a la toma de corriente.
Cuando carga el plumín, el sistema de carga de plumillas hará la magia necesaria para asegurarse de que aparezca el objeto correcto en cada salida.
Editar: Tenía la intención de escribir una publicación completa en el blog alrededor de esta imagen (cambié de opinión después de terminar la imagen), pero incluso solo, debería ayudar a aclarar los puntos de venta para las personas. Aquí van:
The outlet relationship. http://boredzo.org/images/The-outlet-relationship-small.png
+1 ¿Qué herramienta de dibujo usaste? –
Yar: Lineform. http://freeverse.com/lineform/ –
¿Qué sucede si A necesita saber acerca de B, y A es un objeto creado dinámicamente (NSOperation por ejemplo) y B es el ApplicationController? – Vassilis
IBOutlet
es un símbolo que indica al Interface Builder que una variable de instancia de objeto declararse no como
IBOutlet id ivar_name;
debe ser presentado como una salida de una instancia de la clase asociada. Esto le permite conectar objetos de forma gráfica en Interface Builder de forma tal que, después de cargar el NIB (es decir, cuando se envía un mensaje -awakeFromNib
), el valor de ivar_name sea un puntero al objeto que seleccionó como el valor del outlet en Interface Builder .
Desde el punto de vista del lenguaje Objective-C, IBOutlet
no significa nada.
Entonces, el propósito de una variable 'IBOutlet' es señalar una variable de instancia a un objeto GUI en un archivo' nib' (de modo que tengamos acceso programático a un elemento que no codificamos explícitamente pero que fue asignado en la UI arrastrándolo), que podría haber obviado si no usamos Interface Builder y recurrimos a escribir código GUI nosotros mismos, ¿correcto? – SexyBeast
Desde un punto de vista de código e IBOutlet es solo una sugerencia para Interface Builder. En realidad es una macro que compila, bueno, nada en absoluto. Es decir, el compilador elimina completamente al compilar.
Pero Interface Builder puede escanear su código de IBOutlet para que al hacer clic derecho sobre un objeto en IB pueda ver todas las salidas que podría conectar a otros objetos.
alt text http://img27.imageshack.us/img27/5512/picture820090228.png
En este ejemplo, delegado es una variable miembro de UIApplication y es un IBOutlet también.
palabra clave El IBOutlet se define así:
#ifndef IBOutlet
#define IBOutlet
#endif
IBOutlet no hace absolutamente nada en lo que se refiere al compilador. Su único propósito es actuar como una sugerencia para decirle a Interface Builder que esta es una variable de instancia que estamos yendo a conectar a un objeto en un plumín. Cualquier variable de instancia que cree y desee conectarse a un objeto en un archivo nib debe ir precedida de la palabra clave IBOutlet.
Una salida es una variable de instancia en su código (en X-code) a la que se le puede asignar una referencia a un objeto de interfaz de usuario (en Interface Builder). Usted conecta el objeto de interfaz de usuario en la variable de instancia.La asignación se especifica en el archivo NIB creado por Interface Builder.
Puede intentar leer las otras respuestas sobre esta pregunta. Y no, los puntos de venta son unidireccionales. –
También: No, Objective-C no usa una máquina virtual. No, no hay un examen periódico de las variables de salida de cada instancia (tal exploración no tiene sentido ya que las salidas son unidireccionales, y tendrían muy poco sentido incluso si fueran bidireccionales). El sistema no es tan complejo como crees que es. Realmente necesita leer la documentación: http://developer.apple.com/mac/library/documentation/DeveloperTools/Conceptual/IB_UserGuide/ http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ LoadingResources / –
- 1. ¿Qué describe mejor al delegado de la aplicación? ¿Cómo encaja en todo el concepto?
- 2. ¿Describe el proceso de representación de página en un navegador?
- 3. Describe el comando "superior" en Android
- 4. No se puede conectar un botón \ etiqueta con variable \ outlet en el guión gráfico
- 5. Lo que describe el "Manual de Archivo" mejor en Objective-C/plumilla de cacao?
- 6. Muchas consultas DESCRIBE en Zend Framework
- 7. Gramática sin contexto que describe expresiones regulares?
- 8. Salesforce SOQL describe la tabla
- 9. ¿Qué parte de la Especificación del lenguaje Java describe el comportamiento de los varargs omitidos?
- 10. Imposible para mí entender un método de búsqueda de cadenas como se describe. ¿Qué es uFFFF?
- 11. ¿Qué Lisp es mejor en el análisis?
- 12. ¿Qué es un mejor diseño?
- 13. ¿Describe la repetición de nodos XML en W3C XML Schema?
- 14. Android: ¿Comportamiento de launchMode = "singleTask" no como se describe?
- 15. ¿Por qué es mejor adjuntar un JPanel?
- 16. Algoritmo para encontrar si un conjunto de puntos describe un enveloppe convexa
- 17. ¿Qué analizador HTML es el mejor?
- 18. Alternativa a phpUnderControl: ¿es el mejor?
- 19. Documento que describe la implementación de Lua 5.2?
- 20. ¿Qué servidor WAMP es el mejor?
- 21. ¿Cómo puedo describir una tabla en Oracle sin usar el comando DESCRIBE?
- 22. ¿Qué cosas no se hacen mejor en un constructor?
- 23. qué mejor nivel de aislamiento significa un mejor rendimiento en SQL Server
- 24. ¿Qué modelo se adapta mejor a la optimización para un juego de estrategia en tiempo real?
- 25. git cherry confusion - no funciona como se describe en el documento
- 26. ¿Qué es mejor: el almacenamiento en caché a través de HttpContext.Current.Cache o solo una estática?
- 27. ¿Qué es mejor en términos de rendimiento?
- 28. Ejecutar una matriz de cadena que describe el comando de shell
- 29. ¿Por qué el uso es mejor que el uso?
- 30. mejor manera de enviar un mensaje a un hilo
¿Qué quiere decir con "de una (sic) forma humanamente comprensible?" ¿Qué parte tienes problemas para entender? ¿Cuál es tu pasado? cuás es tu pensamiento? Estos son importantes para declarar desde el principio al hacer una pregunta. –
Todo lo que se puede arrastrar desde el constructor de interfaces (IBOutlet's). –