2011-12-21 18 views

Respuesta

51

"Interface Builder".

Antes de Xcode 4, los archivos de interfaz (XIB y NIB) se editaron en un programa separado llamado Interface Builder, de ahí el prefijo.

IBAction se define como void, y IBOutlet a nada. Son solo pistas de Interface Builder al analizar archivos para que estén disponibles para las conexiones.

sólo para añadir la referencia, en el interior AppKit/NSNibDeclarations.h encontrará los siguientes:

#ifndef IBOutlet 
#define IBOutlet 
#endif 

#ifndef IBAction 
#define IBAction void 
#endif 

Así que, en realidad, un código como éste:

@interface ... 
{ 
    IBOutlet NSTextField *label; 
} 
- (IBAction)buttonPressed:(id)sender; 
@end 

se transformará en:

@interface ... 
{ 
    NSTextField *label; 
} 
- (void)buttonPressed:(id)sender; 
@end 

Por el preprocesador, incluso antes de que el compilador lo vea. Esas palabras clave actuaban solo como pistas para Interface Builder.

+3

Solo para sumar, el 'IBAction' es' void'. Es una especie de marcado para que Interface Builder pueda ver qué código de métodos expone para conexiones a botones y otros controles. No estoy seguro acerca de 'IBOutlet', pero estoy seguro de que es similar a' IBAction' para que Interface Builder vea qué controles puede conectarse también al código. – Eimantas

+1

La herramienta todavía se llama Interface Builder; simplemente ya no existe como una aplicación separada. Es una pena, porque realmente adoro el ícono. – BoltClock

+0

@Eimantas He estado editando la respuesta para hacer una nota al mismo tiempo que escribiste el comentario :-) gracias por señalarlo también – sidyll

4

IB significa constructor de interfaz, a medida que conecta objetos a través del constructor de interfaz.

0

IBAction e IBOutlet son Constantes del generador de interfaz IBOutlet: Una clase de controlador puede hacer referencia al objeto en el archivo de punta utilizando una constante especial llamada IBOutlet.

IBAcciones: Los objetos de interfaz en el archivo de punta se pueden configurar para desencadenar métodos específicos en la clase de controlador utilizando IBAction como tipo de retorno del método.

Cuestiones relacionadas