**Interface Builder** is ’n programmatuurontwikkelingstoepassing vir Apple se Mac OS X bedryfstelsels. Dit is deel van die Apple Developer-ontwikkelaarsgereedskap genaamd Xcode (voorheen Project Builder). Interface Builder stel Cocoa- en Carbon-ontwikkelaars in staat om koppelvlakke vir toepassings te maak deur ’n grafiese gebruikerskoppelvlak te gebruik. Die gevolglike koppelvlak word geberg as ’n **.nib**-lêer (kort vir *NeXT Interface Builder*) of meer onlangs as ’n **.xib**-lêer.

Interface Builder is ’n afstammeling van die NeXTSTEP ontwikkelingsagteware van dieselfde naam. ’n Weergawe van Interface Builder is ook gebruik in die ontwikkeling van OpenStep-programmatuur en ’n soortgelyke instrument genaamd Gorm bestaan vir GNUstep. Op 27 Maart 2008 is ’n gespesialiseerde iPhone-weergawe van Interface Builder vrygestel saam met die iPhone POP Beta 2 sodat koppelvlakke vir iPhont-toepassings geskep kon word. Sedert Xcode 4 bestaan Interface Builder nie meer as ’n afsonderlike toepassing nie en die funksionaliteit van Interface Builder is in Xcode ingebou.

Geskiedenis
-----------

Interface Builder het sy eerste verskyning in 1986 gemaak toe dit in Lisp geskryf is vir ExperLisp deur ExperTelligence. Dit is ontwikkel deur Jean-Marie Hullot deur die objekgeoriënteerde eienskappe in ExperLisp te gebruik en dit is diep geïntegreer met die Macintosh werkspakket. Die volgende jaar het Denison Bollay vir Jean-Marie Hullot na NeXT geneem om dit aan Steve Jobs te demonstreer. Jobs het onmiddellik die waarde daarvan raakgesien, dit by NeXTSTEP begin interpreteer en teen 1988 was dit deel van NeXTSTEP 0.8. Dit was die eerste kommersiële toepassing wat dit moontlik gemaak het vir koppelvlakvoorwerpe soos knoppe, keuselyste en vensters om met ’n muis in ’n koppelvlak geplaas te word. Een noemenswaardige vroeë gebruik van Interface Builder was die ontwikkeling van die WorldWideWeb webblaaier wat deur Tim Berners-Lee by CERN op ’n NeXT-rekenaar gemaak is.

Ontwerp
-------

Interface Builder voorsien ’n Objective C-ontwikkelaar met *palette* of versamelings van gebruikerskoppelvlakvoorwerpe. Hierdie gebruikerskoppelvlakvoorwerpe bevat items soos teksvelde, datatabelle, skuifknoppies en uitspringkeuselyste. Interface Builder se palette kan ten volle uitgebrei word, wat beteken dat enige ontwikkelaar nuwe voorwerpe kan ontwikkel en palette tot Interface Builder toevoeg.

Om ’n koppelvlak te bou kan ’n ontwikkelaar bloot koppelvlakvoorwerpe vanaf die palet na ’n venster of keuselys trek. *Aksies* (boodskappe) wat deur die voorwerpe uitgevoer kan word, is verbind aan *teikens* in die toepassing se kode en *afsetpunte* (aanduiders) wat in die toepassing se kode verklaar is, is aan spesifieke voorwerpe verbind. Op hierdie manier word alle inisialisering voor looptyd gedoen. Dit lei tot verbeterde verrigting en vaartbelyning van die ontwikkelingsproses.

Interface Builder berg ’n toepassing se koppelvlak as ’n bundel wat die koppelvlakvoorwerpe en die verhoudings wat in die toepassing gebruik word, bevat.. Hierdie voorwerpe word dan in ’n XML-lêer of ’n NeXT-tipe eienskapslyslêer met die uitbreiding .nib geargiveer (die proses staan in ander kontekste ook bekend as serialisering of marshalling). Wanneer die program oopgemaak word, word die toepaslike NIB-voorwerpe gedeargiveer, in die binêr van hul toepassing verbind en opgeroep. Anders as byna alle ander GGK-ontwerpstelsels wat kode skep om die gebruikerskoppelvlak te bou (noemenswaardige uitsonderings is Glade, Embarcadero Technologies se Delphi en C++ Builder wat die GK-voorwerpe op ’n soortgelyke manier laai) word daar dikwels na NIBs verwys as *gevriesdroog* omdat hulle self die geargiveerde voorwerpe bevat en gereed is om te werk. Sedert Interface Builder se derde weergawe is ’n nuwe lêerformaat (met die uitbreiding .xib) gebruik. Funksioneel is dit dieselfde as ’n .nib behalwe dat dit in ’n plat lêer geberg word om dit meer gebruiklik te maak vir berging in weergawebeheerstelsels en prosessering deur instrumente soos diff.