Jump to content

Interface Builder: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
No edit summary
m Category:CS1 maint: others (Internet Archive); genfixes
 
(28 intermediate revisions by 24 users not shown)
Line 1: Line 1:
{{Short description|Developer Application for MacOS}}
{{About|the macOS application|the general concept|Graphical user interface builder}}
{{Use mdy dates|date=October 2013}}
{{Use mdy dates|date=October 2013}}
{{inline|date=April 2010}}
{{more footnotes|date=April 2010}}
{{About|the Mac OS X application|the general concept|Graphical user interface builder}}
{{Infobox software
{{Infobox software
| name =
| name =
Line 16: Line 17:
| latest preview version =
| latest preview version =
| latest preview date = <!-- {{Start date and age|YYYY|MM|DD}} -->
| latest preview date = <!-- {{Start date and age|YYYY|MM|DD}} -->
| frequently updated = <!-- DO NOT include this parameter unless you know what it does -->
| programming language =
| programming language =
| operating system = [[Mac OS X]]
| operating system = [[macOS]]
| platform =
| platform =
| size =
| size =
Line 27: Line 27:
| website = {{URL|developer.apple.com}}
| website = {{URL|developer.apple.com}}
}}
}}
'''Interface Builder''' is a [[software development]] application for [[Apple Inc.|Apple's]] [[Mac&nbsp;OS&nbsp;X]] [[operating system]]. It is part of [[Xcode]] (formerly Project Builder), the [[Apple Developer Connection]] developer's toolset. Interface Builder allows [[Cocoa (API)|Cocoa]] and [[Carbon (API)|Carbon]] developers to create interfaces for [[Application software|applications]] using a [[graphical user interface]]. The resulting interface is stored as a '''.nib''' file, short for ''NeXT Interface Builder,'' or more recently, as a '''.xib''' file.
'''Interface Builder''' is a [[software development]] application for [[Apple Inc.|Apple's]] [[macOS]] [[operating system]]. It is part of [[Xcode]] (formerly [[Project Builder]]), the [[Apple Developer]] developer's toolset. Interface Builder allows [[Cocoa (API)|Cocoa]] and [[Carbon (API)|Carbon]] developers to [[GUI builder|create interfaces]] for [[Application software|applications]] using a [[graphical user interface]]. The resulting interface is stored as a '''.nib''' file, short for ''NeXT Interface Builder,'' or more recently, as an [[XML]]-based '''.xib''' file.


Interface Builder is descended from the [[NeXTSTEP]] development software of the same name. A version of Interface Builder is also used in the development of [[OpenStep]] software, and a very similar tool called [[Gorm (computing)|Gorm]] exists for [[GNUstep]]. On March 27, 2008, a specialized [[iPhone]] version of Interface Builder allowing interface construction for iPhone applications was released with the iPhone SDK Beta 2.
Interface Builder is descended from the [[NeXTSTEP]] development software of the same name. A version of Interface Builder is also used in the development of [[OpenStep]] software, and a very similar tool called [[Gorm (computing)|Gorm]] exists for [[GNUstep]]. On March 27, 2008, a specialized [[iPhone]] version of Interface Builder allowing interface construction for iPhone applications was released with the iPhone SDK Beta 2.


Interface Builder was intentionally developed as a separate application, to allow [[interaction design]]ers to design interfaces without having to use a code-oriented [[Integrated development environment|IDE]], but as of Xcode 4, Apple has integrated its functionality is directly into Xcode.
Interface Builder was intentionally developed as a separate application, to allow [[interaction design]]ers to design interfaces without having to use a code-oriented [[Integrated development environment|IDE]], but as of Xcode 4, Apple has integrated its functionality directly into Xcode.


== History ==
== History ==


Originally the software was called ''SOS Interface'', and was created by [[Jean-Marie Hullot]] whilst he was a researcher at [[French Institute for Research in Computer Science and Automation|Inria]] at Rocquencourt near Paris. He was allowed to retain ownership of the software upon resigning from Inria, and spent a year working it into a fully-featured product, now named ''Interface Builder''<ref>{{Cite web |title=Jean-Marie Hullot, from perforated cards to the iPhone - Inria |url=https://www.inria.fr/en/jean-marie-hullot-perforated-cards-iphone |access-date=2023-05-17 |website=www.inria.fr}}</ref> and distributed for Macintosh by ExperTelligence in the USA in 1986.<ref>{{Cite book |url=http://archive.org/details/sim_micro-marketworld_1987-02-09_10_6 |title=Micro Marketworld 1987-02-09: Vol 10 Iss 6 |date=1987-02-09 |publisher=Infoworld Media Group |language=English}}</ref> It was written in [[Lisp (programming language)|Lisp]] (for the ''ExperLisp'' product by ''ExperTelligence'') and deeply integrated with the [[Macintosh Toolbox]]. ''Interface Builder'' was presented at MacWorld Expo in San Francisco in January 1987.<ref>{{Cite magazine |last=Dr. Dobb's Journal |url=http://archive.org/details/1987-03-dr-dobbs-journal |title=Dr. Dobb's Journal, March 1987}}</ref>
Interface Builder first made its appearance in 1986 written in [[Lisp (programming language)|Lisp]] (for the ExperLisp product by ExperTelligence). It was invented and developed by [[Jean-Marie Hullot]] using the object-oriented features in ExperLisp, and deeply integrated with the Macintosh toolbox. [[Denison Bollay]] took [[Jean-Marie Hullot]] to [[NeXT]] later that year to demonstrate it to [[Steve Jobs]]. Jobs immediately recognized its value, and started incorporating it into NeXTSTEP, and by 1988 it was part of NeXTSTEP 0.8. It was the first commercial application that allowed interface objects, such as [[Button (computing)|buttons]], [[Menu (computing)|menus]], and [[Windows (computing)|windows]], to be placed in an interface using a mouse. One notable early use of Interface Builder was the development the first [[WorldWideWeb]] web browser by [[Tim Berners-Lee]] at [[CERN]] both made using a [[NeXT Computer|NeXT workstation]].

[[Denison Bollay]] took Jean-Marie Hullot to [[NeXT]] after MacWorld Expo to demonstrate it to [[Steve Jobs]]. Jobs recognized its value, and started incorporating it into NeXTSTEP, and by 1988 it was part of NeXTSTEP 0.8. It was the first commercial application that allowed interface objects, such as [[Button (computing)|buttons]], [[Menu (computing)|menus]], and [[Window (computing)|windows]], to be placed in an interface using a mouse.

One notable early use of ''Interface Builder'' was the development of the first web browser, [[WorldWideWeb]] by [[Tim Berners-Lee]] at [[CERN]], made using a [[NeXT Computer|NeXT workstation]].{{Citation needed|date=July 2023}}


== Design ==
== Design ==


Interface Builder provides ''palettes'', or collections, of user interface objects to an [[Objective-C]] developer. These user interface objects contain items like text fields, data tables, sliders, and pop-up menus. Interface Builder's palettes are completely extensible, meaning any developer can develop new objects and add palettes to Interface Builder.
Interface Builder provides ''palettes'', or collections, of user interface objects to an [[Objective-C]] or [[Swift (programming language)|Swift]] developer. These user interface objects contain items like text fields, data tables, sliders, and pop-up menus. Interface Builder's palettes are completely extensible, meaning any developer can develop new objects and add palettes to Interface Builder.


To build an interface, a developer simply drags interface objects from the palette onto a window or menu. ''Actions'' (messages) which the objects can emit are connected to ''targets'' in the application's code and ''outlets'' (pointers) declared in the application's code are connected to specific objects. In this way all initialization is done before runtime, both improving performance{{Citation needed|date=March 2010}} and streamlining the development process. When Interface Builder was a standalone application, interface designers could ship nib files to developers, who would then drop them into their projects.
To build an interface, a developer simply drags interface objects from the palette onto a window or menu. ''Actions'' (messages) which the objects can emit are connected to ''targets'' in the application's code and ''outlets'' (pointers) declared in the application's code are connected to specific objects. In this way all initialization is done before runtime, both improving performance{{Citation needed|date=March 2010}} and streamlining the development process. When Interface Builder was a standalone application, interface designers could ship nib files to developers, who would then drop them into their projects.


Interface Builder saves an application's interface as a [[Bundle (OS X)|bundle]] that contains the interface objects and relationships used in the application. These objects are archived (a process also known as [[serialization]] or [[Marshalling (computer science)| marshalling]] in other contexts) into either an [[XML]] file or a [[NeXT]]-style property list file with a <tt>.nib</tt> extension. Upon running an application, the proper NIB objects are unarchived, connected into the binary of their owning application, and awakened. Unlike almost all other GUI designer systems which generate code to construct the UI (notable exceptions being [[Glade Interface Designer|Glade]], [[Embarcadero Technologies]]'s [[Embarcadero Delphi|Delphi]] and [[C++ Builder]], which stream UI objects similarly), NIBs are often referred to as ''freeze dried'' because they contain the archived objects themselves, ready to run. As of Interface Builder version 3, a new file format (with extension .xib) has been added, which is functionally identical to .nib, except it is stored in a flat file, making it more suitable for storage in [[revision control]] systems and processing by tools such as [[diff]].
Interface Builder saves an application's interface as a [[Bundle (macOS)|bundle]] that contains the interface objects and relationships used in the application. These objects are archived (a process also known as [[serialization]] or [[Marshalling (computer science)|marshalling]] in other contexts) into either an [[XML]] file or a NeXT-style [[property list]] file with a {{mono|.nib}} extension. Upon running an application, the proper NIB objects are unarchived, connected into the binary of their owning application, and awakened. Unlike almost all other GUI designer systems which generate code to construct the UI (notable exceptions being [[Glade Interface Designer|Glade]], [[Embarcadero Technologies]]'s [[Embarcadero Delphi|Delphi]] and [[C++Builder]], which stream UI objects similarly), NIBs are often referred to as ''freeze dried'' because they contain the archived objects themselves, ready to run. As of Interface Builder version 3, a new file format (with extension .xib) has been added, which is functionally identical to .nib, except it is stored in a flat file, making it more suitable for storage in [[revision control]] systems and processing by tools such as [[diff]].

==References==
{{Reflist}}


== External links ==
== External links ==
* [http://developer.apple.com/tools/interfacebuilder.html Apple's Interface Builder description] for Cocoa and Carbon development
* [https://developer.apple.com/xcode/interface-builder/ Apple's Interface Builder description] for Cocoa and Carbon development
* [http://docs.sun.com/app/docs/doc/802-2110/6i63kq4sf?a=view Sun's Interface Builder documentation] for OpenStep development
* [https://web.archive.org/web/20050427175754/http://docs.sun.com/app/docs/doc/802-2110/6i63kq4sf?a=view Sun's Interface Builder documentation] for OpenStep development (Archive.org)
* [http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html Apple's Nib file documentation]
* [https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html Apple's Nib file documentation]
* [http://vimeo.com/62618532 Action!, the worlds &#91;sic&#93; first dynamic interface builder - 1988]
* [http://vimeo.com/62618532 Action!, the worlds &#91;sic&#93; first dynamic interface builder - 1988]


{{Mac OS X DevTools}}
{{Mac OS X DevTools}}
{{GUI builders}}


[[Category:OS X programming tools]]
[[Category:MacOS programming tools]]
[[Category:NeXT]]
[[Category:NeXT]]
[[Category:User interface builders]]
[[Category:User interface builders]]

Latest revision as of 21:34, 21 May 2024

Developer(s)Apple Inc.
Initial release1988; 36 years ago (1988)
Stable release
3.2.6 / Released March 15, 2011; 13 years ago (2011-03-15)
4.0 / Released March 9, 2011; 13 years ago (2011-03-09)
Operating systemmacOS
Typesoftware development
LicenseProprietary, distributed with Xcode suite.
Websitedeveloper.apple.com

Interface Builder is a software development application for Apple's macOS operating system. It is part of Xcode (formerly Project Builder), the Apple Developer developer's toolset. Interface Builder allows Cocoa and Carbon developers to create interfaces for applications using a graphical user interface. The resulting interface is stored as a .nib file, short for NeXT Interface Builder, or more recently, as an XML-based .xib file.

Interface Builder is descended from the NeXTSTEP development software of the same name. A version of Interface Builder is also used in the development of OpenStep software, and a very similar tool called Gorm exists for GNUstep. On March 27, 2008, a specialized iPhone version of Interface Builder allowing interface construction for iPhone applications was released with the iPhone SDK Beta 2.

Interface Builder was intentionally developed as a separate application, to allow interaction designers to design interfaces without having to use a code-oriented IDE, but as of Xcode 4, Apple has integrated its functionality directly into Xcode.

History[edit]

Originally the software was called SOS Interface, and was created by Jean-Marie Hullot whilst he was a researcher at Inria at Rocquencourt near Paris. He was allowed to retain ownership of the software upon resigning from Inria, and spent a year working it into a fully-featured product, now named Interface Builder[1] and distributed for Macintosh by ExperTelligence in the USA in 1986.[2] It was written in Lisp (for the ExperLisp product by ExperTelligence) and deeply integrated with the Macintosh Toolbox. Interface Builder was presented at MacWorld Expo in San Francisco in January 1987.[3]

Denison Bollay took Jean-Marie Hullot to NeXT after MacWorld Expo to demonstrate it to Steve Jobs. Jobs recognized its value, and started incorporating it into NeXTSTEP, and by 1988 it was part of NeXTSTEP 0.8. It was the first commercial application that allowed interface objects, such as buttons, menus, and windows, to be placed in an interface using a mouse.

One notable early use of Interface Builder was the development of the first web browser, WorldWideWeb by Tim Berners-Lee at CERN, made using a NeXT workstation.[citation needed]

Design[edit]

Interface Builder provides palettes, or collections, of user interface objects to an Objective-C or Swift developer. These user interface objects contain items like text fields, data tables, sliders, and pop-up menus. Interface Builder's palettes are completely extensible, meaning any developer can develop new objects and add palettes to Interface Builder.

To build an interface, a developer simply drags interface objects from the palette onto a window or menu. Actions (messages) which the objects can emit are connected to targets in the application's code and outlets (pointers) declared in the application's code are connected to specific objects. In this way all initialization is done before runtime, both improving performance[citation needed] and streamlining the development process. When Interface Builder was a standalone application, interface designers could ship nib files to developers, who would then drop them into their projects.

Interface Builder saves an application's interface as a bundle that contains the interface objects and relationships used in the application. These objects are archived (a process also known as serialization or marshalling in other contexts) into either an XML file or a NeXT-style property list file with a .nib extension. Upon running an application, the proper NIB objects are unarchived, connected into the binary of their owning application, and awakened. Unlike almost all other GUI designer systems which generate code to construct the UI (notable exceptions being Glade, Embarcadero Technologies's Delphi and C++Builder, which stream UI objects similarly), NIBs are often referred to as freeze dried because they contain the archived objects themselves, ready to run. As of Interface Builder version 3, a new file format (with extension .xib) has been added, which is functionally identical to .nib, except it is stored in a flat file, making it more suitable for storage in revision control systems and processing by tools such as diff.

References[edit]

  1. ^ "Jean-Marie Hullot, from perforated cards to the iPhone - Inria". www.inria.fr. Retrieved May 17, 2023.
  2. ^ Micro Marketworld 1987-02-09: Vol 10 Iss 6. Infoworld Media Group. February 9, 1987.
  3. ^ Dr. Dobb's Journal. "Dr. Dobb's Journal, March 1987". {{cite magazine}}: Cite magazine requires |magazine= (help)

External links[edit]