Interface Builder (uygulama)

**Interface Builder** Apple'nın Mac OS X işletim sistemi için bir yazılım geliştirme uygulamasıdır. Bu, Xcode'nin (eski adı Project Builder)  araç setinin bir parçasıdır. Arayüz Oluşturucu, Cocoa API ve Carbon API geliştiricilerine grafik kullanıcı arayüzü kullanarak uygulamalar için arayüzler oluşturmasına olanak tanır.

Interface Builder ismini aynı adı taşıyan NextStep geliştirme yazılımından almıştır. Interface Builder'ın bir versiyonu OpenStep yazılımının geliştirilmesinde de kullanılır ve GNUstep için Gorm adlı çok benzer bir araç bulunmaktadır. 27 Mart 2008'de, iPhone Uygulamaları için arayüz yapımına olanak tanıyan Interface Builder'ın uzmanlaşmış bir iPhone sürümü iPhone SDK Beta 2 ile piyasaya sürüldü.

Interface Builder, etkileşimli tasarımcılara kod yönelimli bir tümleşik geliştirme ortamı kullanmaya gerek kalmadan arayüzleri tasarlamalarına izin vermek için bilerek ayrı bir uygulama olarak geliştirildi, ancak Xcode 4'ten itibaren Apple kendi işlevselliğini doğrudan Xcode'ye entegre etti.

## Yayınlama geçmişi
Interface Builder ilk olarak 1986'da Lisp (ExperTelligence tarafından üretilen ExperLisp ürünü için) olarak çıktı. Jean-Marie Hullot tarafından ExperLisp'deki nesne yönelimli özellikleri kullanarak ve Macintosh araç kutusuyla derinden entegre olarak icat edildi ve geliştirildi. Denison Bollay Jean-Marie Hullot'u Steve Jobs'a göstermek için o yılın ilerleyen saatlerinde NeXT'ye götürdü. Jobs hemen değerini fark etti, onu NeXTSTEP'e dahil etmeye başladı ve 1988'de NeXTSTEP 0.8'in bir parçası oldu. Uygulama düğmeler, menüler ve pencereler gibi arabirim nesnelerinin bir fare kullanarak bir arabirime yerleştirilmesine izin veren ilk ticari uygulama oldu. Interface Builder'ın dikkat çeken ilk kullanışında, Tim Berners-Lee'nin CERN'de (Avrupa Nükleer Araştırma Merkezi) gerçekleştirdiği ilk WorldWideWeb web tarayıcısı, NeXT iş istasyonu kullanılarak geliştirildi.

## Tasarım
Interface Builder, Objective-C geliştiricisine kullanıcı arabirimi nesneleri paletleri veya koleksiyonları sağlar. Bu kullanıcı arabirimi nesneleri, metin alanları, veri tabloları, kaydırıcılar ve açılır menüler gibi öğeler içerir. Interface Builder paletleri tamamen genişletilebilir, yani herhangi bir geliştirici yeni nesneler geliştirebilir ve Interface Builder'a paletler ekleyebilir.

Arabirim oluşturmak için, geliştirici basitçe paletten arayüz nesnelerini bir pencere veya menüye sürükler. Nesnelerin yayabileceği eylemler (mesajlar) uygulamanın kodundaki hedeflere bağlıdır ve uygulamanın kodunda bildirilen çıkışlar (işaretçiler) belirli nesnelere bağlıdır. Böylece, tüm başlatma, çalışma zamanından önce yapılır, hem performansı artırır, hem de geliştirme sürecini düzene sokar. Interface Builder bağımsız bir uygulama olduğu zaman arayüz tasarımcıları, nib dosyalarını geliştiricilere gönderir ve geliştiricilere bu dosyaları projelerine atarlar.

Interface Builder, bir uygulamanın arayüzünü, uygulamada kullanılan arayüz nesnelerini ve ilişkileri içeren bir paket olarak kaydeder. Bu nesneler, bir XML dosyasına veya bir .nib uzantılı NeXT stili özellik listesi dosyasına arşivlenir (diğer bağlamlarda seri hale getirme veya sıralama olarak da bilinir). Bir uygulamayı çalıştırdıktan sonra, uygun NIB nesneleri arşivden çıkarılır, sahip oldukları uygulamanın ikili dosyasına bağlanır ve uyanır.

Kullanıcı arayüzü oluşturmak için kod üreten hemen hemen tüm diğer GUI tasarımcı sistemlerinin aksine (önemli olan istisnalar Glade, Embarcadero Technologies'in Delphi ve C++Builder, UI nesnelerini benzer şekilde akıttı), NIB'lere genellikle "arındırılmış, kurutulmuş" denir, çünkü arşivlenmiş nesneler kendileri içerirler. Interface Builder sürüm 3'ten itibaren, düz bir dosyada saklanması hariç olmak üzere işlevsel olarak aynı olan .nib ile yeni bir dosya biçimi (uzantılı .xib) eklenmiştir, bu da revizyon kontrol sistemlerinde depolama ve işleme için daha uygun hale getirir.

## Kaynakça

## Dış bağlantılar
* Interface Builder 
* Interface Builder Built-In 

## Ayrıca bakınız
*Dashcode (yazılım)
*Xcode
*Instruments (yazılım)