Interface Builder
# Interface Builder

Interface Builder è un'applicazione per lo sviluppo software per il sistema operativo macOS e fa parte di Xcode (tool di sviluppo fornito gratuitamente con macOS, precedentemente chiamato Project Builder). Interface Builder permette agli sviluppatori che usano Carbon e Cocoa di disegnare interfacce grafiche per le applicazioni usando uno strumento grafico, senza la necessità di scrivere decine di righe di codice. L'interfaccia risultante è salvata in un file .nib (abbreviazione di NeXT Interface Builder).

Interface Builder deriva dal omonimo software del NeXTSTEP development software. Il suo aspetto è immutato in Gorm, un l'equivalente di Interface Builder per GNUstep. Una versione di Interface Builder è usata anche nello sviluppo del software OpenStep.

## Storia

Interface Builder appare per la prima volta nel 1988 come parte di NeXTSTEP 0.8. È stata una delle prime applicazioni commerciali che permetteva di disegnare interfacce e inserirci widget e menù usando il mouse.

## Design

Interface Builder mette a disposizione allo sviluppatore Objective-C palette o collezioni. Questi elementi dell'interfaccia grafica comprendono caselle di testo, tabelle e menu a comparsa. Le palette di Interface Builder sono completamente estensibili: questo significa che è possibile sviluppare nuovi oggetti e aggiungerli alle palette.

Per costruire un'interfaccia lo sviluppatore deve semplicemente trascinare gli oggetti dalla palette in una finestra o in un menu.

Le actions (o messaggi) che possono essere emesse dagli oggetti sono collegate ai target nel codice dell'applicazione e gli outlet (o puntatori) dichiarati nel codice dell'applicazione sono collegati a oggetti specifici. In questo modo tutta l'inizializzazione viene effettuata prima dell'esecuzione dell'applicazione; grazie a ciò, da una parte il processo di sviluppo viene semplificato e dall'altra vengono migliorate le prestazioni dell'applicazione.

Interface Builder registra l'interfaccia di un'applicazione come se fosse una directory (bundle), che contiene gli oggetti dell'interfaccia e le relazioni tra di essi utilizzate nell'applicazione. Questi oggetti sono raggruppati o in un file XML, o in un file stile-NeXT con estensione .nib. Quando un'applicazione viene lanciata, i corrispondenti oggetti NIB vengono scompattati, collegati al codice binario della loro rispettiva applicazione, e risvegliati. I NIB vengono spesso chiamati "freeze dried" (pronti all'uso) perché contengono oggetti archiviati e pronti per essere eseguiti.

Grazie a questa struttura e a questa tecnologia, le risorse localizzate nelle diverse lingue vengono separate e sono registrate in NIB e risvegliate quando occorre, cioè quando nel pannello Internazionale delle Preferenze di Sistema di macOS è impostata quella determinata lingua.

